Problèmes de mise en cache avec http.FileServer
Cet article aborde un défi spécifique rencontré lors de l'utilisation de la fonction http.FileServer dans une application Go. Le problème survient lorsque la fonction met en cache le contenu des fichiers et continue de servir les anciennes versions même après que les fichiers ont été modifiés.
Dans un exemple simplifié, un programme Go sert des fichiers HTML statiques à partir d'un répertoire ./www/ :
<code class="go">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) } }</code>
Cependant, après avoir modifié le fichier HTML et rechargé la page, le navigateur continue d'afficher le contenu obsolète. Le problème persiste même après le redémarrage du programme.
Cause
La racine du problème réside dans l'utilisation d'un dossier partagé Virtual Box pour héberger les fichiers HTML. Cette configuration amène Windows à mettre en cache le contenu des fichiers, empêchant la fonction http.FileServer de fournir les versions mises à jour.
Solution
Pour résoudre le problème, évitez d'utiliser Virtual Box partagé dossiers pour les fichiers destinés à être utilisés dans http.FileServer. Au lieu de cela, stockez les fichiers directement sur le système hôte, par exemple dans un répertoire /testing/ :
<code class="go">http.Handle("/", http.FileServer(http.Dir("/home/vagrant/testing/")))</code>
En suivant ces directives, la fonction http.FileServer servira avec précision le contenu des fichiers mis à jour sans aucun problème de mise en cache.
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!