2016-07-10 10 views
4

Ich baue eine Front-End-Web-App mit eckigen (meist UI-Router) und lokale Entwicklung durch die Bereitstellung der HTML-Dateien über den Knoten http-server. Ich habe bemerkt, dass der http-Server meine statischen HTML-Dateien nicht bereitstellt, wenn ich Updates mache, was eine Herausforderung für meine lokale Entwicklung darstellt.Node http-Server nicht dienen aktualisierte HTML-Dateien

Ich habe http-Server global mit npm install http-server -g installiert und starten Sie es, indem Sie in den Stammprojektordner gehen und http-server ausführen. Die Standardeinstellung lautet localhost: 8080. Es gibt zwei Möglichkeiten, die nach jeder Aktualisierung oder nach dem Inkognito-Modus von Chrome die Portnummer zu ändern scheinen.

Gibt es eine Möglichkeit, HTTP-Server normal zu verwenden, ohne den Port zu ändern oder den Inkognito-Modus zu verwenden?

Wenn es relevant ist, ich MBP v verwenden. 10.11.3

Vielen Dank!

Antwort

5

Die zwei Möglichkeiten, die scheinbar funktionieren, sind das Ändern der Portnummer nach jedem Update oder das Durchsuchen des Inkognito-Modus von Chrome.

Ihr Problem ist clientseitige Zwischenspeicherung. Der Inkognito-Modus verfügt über ein eigenes Datenverzeichnis, unabhängig von Ihrem normalen Browsing.

Glücklicherweise bietet HTTP-Server eine Möglichkeit für Sie, die Cache-Steuerkopfzeilen festzulegen.

-c Legen Sie die Cache-Zeit (in Sekunden) für den Cache-Control-Max-Age-Header, z. -c10 für 10 Sekunden (standardmäßig '3600'). Um das Zwischenspeichern zu deaktivieren, verwenden Sie -c-1.

Es ist in der Dokumentation aufgeführt ist hier: https://github.com/indexzero/http-server

Sie auf HTTP-Caching-Richtlinien hier lesen können: https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=en

+0

Es ist keine clientseitige Problem. Das Deaktivieren des Cache oder "Factory Restart" hilft nicht. Nur Neustart des Servers. Außerdem geben HTML-Tags an, dass das Zwischenspeichern abgebrochen wird, und auch nichts. – Slav

+1

@Slav HTML-Tags werden natürlich nicht Caching ... falsche Ebene abbrechen. Wenn der Incognito-Modus das Problem behebt, ist das Problem absolut clientseitig, wie meine Antwort erklärt. Sie haben wahrscheinlich ein anderes Problem als die ursprüngliche Frage. Beachten Sie außerdem, dass Cachespeicher-Steueranweisungen in Antwortheadern auch serverseitige Caches betreffen (für Proxies mit gutem Verhalten). Sie könnten auch 'sendfile' auf Ihrem HTTP-Proxy deaktivieren, wenn Sie einen verwenden. Nginx zum Beispiel verwendet sendfile und es kann eine Menge Probleme auf VMs verursachen. – Brad

+0

wahrscheinlich andere Probleme, ja. Scheint, als ob ich auch den hier beschriebenen Fehler habe: https://github.com/indexzero/http-server/issues/149 Inkognito-Modus hilft nicht. – Slav

5

Versuchen Sie, die Entwicklerwerkzeuge zu öffnen und das Kontrollkästchen "Cache deaktivieren" in der Registerkarte "Netzwerk" in Chrome zu aktivieren.