Heim Web-Frontend js-Tutorial Ein einfacher statischer HTTP-Dateiserver, der mit nodejs und Python_node.js geschrieben wurde

Ein einfacher statischer HTTP-Dateiserver, der mit nodejs und Python_node.js geschrieben wurde

May 16, 2016 pm 04:41 PM
nodejs python

Im täglichen Entwicklungsprozess müssen wir häufig einige im CDN platzierte statische Dateien (wie JavaScript, CSS, HTML-Dateien usw.) ändern. In diesem Prozess hoffen wir, eine Möglichkeit zu haben, das Online-CDN abzubilden Verzeichnis in lokal Ein Verzeichnis auf der Festplatte, sodass wir eine Datei nicht veröffentlichen müssen, wenn wir sie lokal ändern, und der Effekt sofort nach der Aktualisierung sichtbar ist.

Unser CDN-Domänenname lautet beispielsweise: http://a.mycdn.com und das entsprechende lokale Verzeichnis lautet: D:workassets. Wir hoffen, dass alle auf http://a.mycdn.com/* zugreifen können. wird zugeordnet. Gehen Sie zu den lokalen D:workassets*. Wenn Sie beispielsweise http://a.mycdn.com/s/atp.js besuchen, lesen Sie tatsächlich die lokale Datei D:workassetssatp.js, ohne Online-Dateien aus dem Internet herunterzuladen.

Die Implementierung dieser Funktion ist sehr einfach. Die wichtigsten Punkte sind wie folgt:

1. Öffnen Sie lokal einen HTTP-Dienst und überwachen Sie Port 80; 2. Ändern Sie die Systemhosts-Datei, fügen Sie „127.0.0.1 a.mycdn.com“ hinzu und binden Sie den CDN-Domänennamen an die lokale Serveradresse 3. Konfigurieren Sie den lokalen HTTP-Dienst. Überprüfen Sie zunächst, ob die entsprechende Datei auf der lokalen Festplatte vorhanden ist. Wenn sie nicht vorhanden ist, wird der entsprechende Inhalt zurückgegeben wird zurückgegeben.

Wie Sie sehen, besteht der Schlüssel zum Aufbau eines lokalen HTTP-Dienstes. In diesem Bereich gibt es viele Tutorials, wie zum Beispiel die lokale Installation von Serversoftware wie Apache oder Ngnix und die anschließende Konfiguration entsprechender Weiterleitungsregeln. Ich persönlich bin jedoch der Meinung, dass diese Methode immer noch etwas kompliziert ist. In diesem Artikel wird eine weitere Methode vorgestellt, die keine Installation von Serversoftware erfordert.

Da wir lokal entwickeln und debuggen, sind die Anforderungen an Leistung und Parallelität nicht hoch, sodass wir eigentlich keine professionelle HTTP-Software wie Apache/Ngnix benötigen, sondern nur ein Skript, das HTTP-Dienste bereitstellen kann. Das war’s. Verwenden Sie beispielsweise nodejs, um es zu implementieren.

/**
 * Autor: oldj
 *
 **/

var http = require("http"), url = require("url"),

path = require("path"),
fs = require("fs"),
local_folders,
base_url;

local_folders = [ // Lokaler Pfad, der Agent sucht in den Verzeichnissen in dieser Liste nach Dateien, und wenn er nicht gefunden wird, geht er zur Online-Adresse

„D:/work/assets“

];
base_url = "http://10.232.133.214"; // Online-Pfad, wenn die Datei nicht gefunden werden kann, auf diese Adresse umleiten

Funktion LoadFile(Pfadname, Antwort) {

var i, l = local_folders.length,
fn;

console.log("versuchen zu laden" Pfadname);

für (i = 0; i < l; i ) {

fn = local_folders[i] Pfadname;

if (path.existsSync(fn) && fs.statSync(fn).isFile()) {

fs.readFile(fn, function (err, data) {
Response.writeHead(200);
Response.write(data);
Response.end();
});

zurück;

}


}

Response.writeHead(302, {

„Standort“:base_url-Pfadname

});
Response.end();
}

http.createServer(

Funktion (Anfrage, Antwort) {


var req_url = request.url,

Pfadname;


// Anfragen ähnlich wie http://a.tbcdn.cn/??p/global/1.0/global-min.css,tbsp/tbsp.css?t=20110920172000.css

verarbeiten pathname = req_url.indexOf("??") == -1 ? url.parse(request.url).pathname : req_url;

console.log("Anfrage für '" Pfadname "' empfangen.");
LoadFile(Pfadname, Antwort);

}).listen(80);


Achten Sie darauf, die Werte der Variablen local_folders und base_url oben auf die von Ihnen benötigten Werte zu ändern. Speichern Sie diese Datei beispielsweise als local-cdn-proxy.js und führen Sie dann „node local-cdn-proxy.js“ in der Befehlszeile aus. Vergessen Sie natürlich nicht, die Bindung auszuführen Gastgeber.


Wenn Sie über http auf einen Pfad zugreifen, sucht das obige Skript zunächst im entsprechenden lokalen Verzeichnis. Wenn es gefunden wird, wird der Inhalt der entsprechenden Datei zurückgegeben. Wenn es nicht gefunden wird, springt es direkt zum entsprechenden Online-Verzeichnis Adresse. Für Situationen, in denen er nicht gefunden werden kann, besteht eine andere Lösung darin, den lokalen Server den entsprechenden Inhalt online herunterladen und zurückgeben zu lassen. Für diese Anforderung reicht jedoch ein 302-Sprung aus.

Zusätzlich zur NodeJS-Version habe ich auch eine Python-Version geschrieben:

Code kopieren Der Code lautet wie folgt:

# -*- Codierung: utf-8 -*-
#
# Autor: oldj
#

Betriebssystem importieren
BaseHTTPServer importieren

LOCAL_FOLDERS = [
    „D:/work/assets“
]
BASE_URL = "http://10.232.133.214"

Klasse WebRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):

    def do_GET(self):
        print „Anfrage für ‚%s‘ erhalten.“ % self.path
        für Ordner in LOCAL_FOLDERS:
            fn = os.path.join(folder, self.path.replace("/", os.sep)[1:])
            wenn os.path.isfile(fn):
                self.send_response(200)
                self.wfile.write(open(fn, "rb").read())
                Pause

        sonst:
            self.send_response(302)
            self.send_header("Location", "%s%s" % (BASE_URL, self.path))

server = BaseHTTPServer.HTTPServer(("0.0.0.0", 80), WebRequestHandler)
server.serve_forever()


可以看到,Python verwendet die Nodejs-Software, um die Funktionalität zu verbessern.

上面的两段代码的功能还相对比较简单, 比如没有输出内容的 MIME-Type、Content-Length 等头信息, 对可能的阻塞操作 (如读取文件超时等)也没有做特别的处理。对于本地开发环境来说, 它们已经是可以工作的版本了, 你也可以继续扩展这两个脚本, 以便满足更多的需求.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ist die VSCODE -Erweiterung bösartig? Ist die VSCODE -Erweiterung bösartig? Apr 15, 2025 pm 07:57 PM

VS -Code -Erweiterungen stellen böswillige Risiken dar, wie das Verstecken von böswilligem Code, das Ausbeutetieren von Schwachstellen und das Masturbieren als legitime Erweiterungen. Zu den Methoden zur Identifizierung böswilliger Erweiterungen gehören: Überprüfung von Verlegern, Lesen von Kommentaren, Überprüfung von Code und Installation mit Vorsicht. Zu den Sicherheitsmaßnahmen gehören auch: Sicherheitsbewusstsein, gute Gewohnheiten, regelmäßige Updates und Antivirensoftware.

So führen Sie Programme in der terminalen VSCODE aus So führen Sie Programme in der terminalen VSCODE aus Apr 15, 2025 pm 06:42 PM

Im VS -Code können Sie das Programm im Terminal in den folgenden Schritten ausführen: Erstellen Sie den Code und öffnen Sie das integrierte Terminal, um sicherzustellen, dass das Codeverzeichnis mit dem Terminal Working -Verzeichnis übereinstimmt. Wählen Sie den Befehl aus, den Befehl ausführen, gemäß der Programmiersprache (z. B. Pythons Python your_file_name.py), um zu überprüfen, ob er erfolgreich ausgeführt wird, und Fehler auflösen. Verwenden Sie den Debugger, um die Debugging -Effizienz zu verbessern.

Kann gegen Code in Windows 8 ausgeführt werden Kann gegen Code in Windows 8 ausgeführt werden Apr 15, 2025 pm 07:24 PM

VS -Code kann unter Windows 8 ausgeführt werden, aber die Erfahrung ist möglicherweise nicht großartig. Stellen Sie zunächst sicher, dass das System auf den neuesten Patch aktualisiert wurde, und laden Sie dann das VS -Code -Installationspaket herunter, das der Systemarchitektur entspricht und sie wie aufgefordert installiert. Beachten Sie nach der Installation, dass einige Erweiterungen möglicherweise mit Windows 8 nicht kompatibel sind und nach alternativen Erweiterungen suchen oder neuere Windows -Systeme in einer virtuellen Maschine verwenden müssen. Installieren Sie die erforderlichen Erweiterungen, um zu überprüfen, ob sie ordnungsgemäß funktionieren. Obwohl VS -Code unter Windows 8 möglich ist, wird empfohlen, auf ein neueres Windows -System zu upgraden, um eine bessere Entwicklungserfahrung und Sicherheit zu erzielen.

Kann Visual Studio -Code in Python verwendet werden Kann Visual Studio -Code in Python verwendet werden Apr 15, 2025 pm 08:18 PM

VS -Code kann zum Schreiben von Python verwendet werden und bietet viele Funktionen, die es zu einem idealen Werkzeug für die Entwicklung von Python -Anwendungen machen. Sie ermöglichen es Benutzern: Installation von Python -Erweiterungen, um Funktionen wie Code -Abschluss, Syntax -Hervorhebung und Debugging zu erhalten. Verwenden Sie den Debugger, um Code Schritt für Schritt zu verfolgen, Fehler zu finden und zu beheben. Integrieren Sie Git für die Versionskontrolle. Verwenden Sie Tools für die Codeformatierung, um die Codekonsistenz aufrechtzuerhalten. Verwenden Sie das Lining -Tool, um potenzielle Probleme im Voraus zu erkennen.

Wählen Sie zwischen PHP und Python: Ein Leitfaden Wählen Sie zwischen PHP und Python: Ein Leitfaden Apr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

Kann VSCODE für MAC verwendet werden Kann VSCODE für MAC verwendet werden Apr 15, 2025 pm 07:36 PM

VS -Code ist auf Mac verfügbar. Es verfügt über leistungsstarke Erweiterungen, GIT -Integration, Terminal und Debugger und bietet auch eine Fülle von Setup -Optionen. Für besonders große Projekte oder hoch berufliche Entwicklung kann VS -Code jedoch Leistung oder funktionale Einschränkungen aufweisen.

PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

Kann vscode ipynb ausführen Kann vscode ipynb ausführen Apr 15, 2025 pm 07:30 PM

Der Schlüssel zum Ausführen von Jupyter -Notebook im VS -Code liegt darin, sicherzustellen, dass die Python -Umgebung ordnungsgemäß konfiguriert ist, verstehen, dass die Codeausführungsreihenfolge mit der Zellreihenfolge übereinstimmt, und sich der großen Dateien oder externen Bibliotheken bewusst zu sein, die die Leistung beeinflussen können. Die vom VS -Code bereitgestellten Codebetausch- und Debugging -Funktionen können die Codierungseffizienz erheblich verbessern und Fehler verringern.

See all articles