Le http.FileServer dans Go est conçu pour servir des fichiers statiques à partir d'un système de fichiers donné, offrant un moyen efficace et pratique pour héberger du contenu Web. Cependant, certaines circonstances peuvent entraîner un comportement de mise en cache inattendu, entraînant la diffusion de fichiers obsolètes.
Un de ces problèmes survient lors de l'utilisation de dossiers partagés Virtual Box pour stocker des fichiers pour http.FileServer. Dans ce scénario, le problème est lié à l'accès synchronisé de ces fichiers entre les systèmes d'exploitation hôte et invité.
Pour illustrer, considérons l'exemple fourni :
<code class="go">http.Handle("/", http.FileServer(http.Dir("./www/"))) err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println(err) }</code>
Avec un HTML fichier comme :
<code class="html"><!doctype html> <html> <body> <p>Hello there</p> </body> </html></code>
Lors de sa diffusion initiale, le contenu s'affiche correctement et les en-têtes de réponse affichent la longueur de contenu appropriée et l'horodatage de la dernière modification.
Cependant, lors de la modification du code HTML fichier et en rechargeant la page, le contenu original est toujours affiché. En effet, le fichier modifié n'est pas correctement mis en cache par le système d'exploitation en raison de problèmes de synchronisation entre l'hôte et l'invité. Ce comportement est observé même après avoir quitté et redémarré le programme.
La solution à ce problème consiste à éviter d'utiliser les dossiers partagés Virtual Box lors de l'hébergement de fichiers pour http.FileServer. En stockant les fichiers directement sur le système d'exploitation invité, les problèmes de synchronisation sont éliminés, permettant au serveur de fichiers de mettre correctement en cache les fichiers et de diffuser le contenu mis à jour.
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!