Maison >développement back-end >Golang >Pourquoi mes fichiers modifiés ne sont-ils pas servis par le gestionnaire de serveur de fichiers Go dans Virtual Box ?

Pourquoi mes fichiers modifiés ne sont-ils pas servis par le gestionnaire de serveur de fichiers Go dans Virtual Box ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 02:52:29769parcourir

Why Aren't My Edited Files Being Served by Go's FileServer Handler in Virtual Box?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn