Problèmes de mise en cache du serveur de fichiers HTTP
Le package net/http dans Go fournit un gestionnaire FileServer pour servir les fichiers statiques. Cependant, les utilisateurs ont rencontré un problème où les fichiers récemment modifiés ne sont pas affichés, bien que l'en-tête Content-Length dans la réponse soit exact.
Cause :
Le problème a été attribué à l'utilisation d'un dossier partagé Virtual Box pour héberger les fichiers statiques. Lorsque les fichiers sont accessibles via le dossier partagé, Virtual Box effectue une mise en cache, ce qui entraîne la diffusion de la version obsolète du fichier par le gestionnaire FileServer.
Exemple :
Considérons le programme suivant :
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) } }
Avec le fichier HTML :
<code class="html"><!doctype html> <html> <body> <p>Hello there everyone</p> </body> </html></code>
Lors de l'accès à cette page depuis la box Vagrant, le contenu ne sera pas mis à jour, même après avoir rafraîchi le navigateur ou modifier le fichier HTML.
Solution :
Pour résoudre ce problème, il est recommandé d'éviter d'utiliser les dossiers partagés Virtual Box pour servir des fichiers statiques avec le gestionnaire http.FileServer . Au lieu de cela, déplacez les fichiers vers un répertoire local sur la boîte Vagrant et servez-les à partir de là.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!