Heim >Backend-Entwicklung >Golang >Warum werden meine bearbeiteten Dateien nicht vom FileServer-Handler von Go in Virtual Box bereitgestellt?
HTTP-Dateiserver-Caching-Probleme
Das net/http-Paket in Go stellt einen FileServer-Handler für die Bereitstellung statischer Dateien bereit. Benutzer sind jedoch auf ein Problem gestoßen, bei dem kürzlich bearbeitete Dateien nicht angezeigt werden, obwohl der Content-Length-Header in der Antwort korrekt ist.
Ursache:
Das Problem wurde auf die Verwendung eines freigegebenen Virtual Box-Ordners zum Hosten der statischen Dateien zurückgeführt. Wenn über den freigegebenen Ordner auf die Dateien zugegriffen wird, führt Virtual Box eine Zwischenspeicherung durch, wodurch die veraltete Version der Datei vom FileServer-Handler bereitgestellt wird.
Beispiel:
Betrachten Sie das folgende Programm:
package main import ( "fmt" "net/http" ) func main() { http.Handle("/", http.FileServer(http.Dir("./www/"))) err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println(err) } }
Mit der HTML-Datei:
<code class="html"><!doctype html> <html> <body> <p>Hello there everyone</p> </body> </html></code>
Wenn Sie über die Vagrant-Box auf diese Seite zugreifen, wird der Inhalt nicht aktualisiert, auch nicht nach einer Aktualisierung des Browsers oder Ändern der HTML-Datei.
Lösung:
Um dieses Problem zu beheben, wird empfohlen, die Verwendung freigegebener Virtual Box-Ordner für die Bereitstellung statischer Dateien mit dem http.FileServer-Handler zu vermeiden . Verschieben Sie die Dateien stattdessen in ein lokales Verzeichnis auf der Vagrant-Box und stellen Sie sie von dort aus bereit.
Das obige ist der detaillierte Inhalt vonWarum werden meine bearbeiteten Dateien nicht vom FileServer-Handler von Go in Virtual Box bereitgestellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!