Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Fail Saya yang Diedit Tidak Dilayan oleh Pengendali Pelayan Fail Go dalam Kotak Maya?

Mengapa Fail Saya yang Diedit Tidak Dilayan oleh Pengendali Pelayan Fail Go dalam Kotak Maya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 02:52:29660semak imbas

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

Isu Caching Pelayan Fail HTTP

Pakej net/http dalam Go menyediakan pengendali FileServer untuk menyediakan fail statik. Walau bagaimanapun, pengguna menghadapi masalah apabila fail yang diedit baru-baru ini tidak dipaparkan, walaupun pengepala Panjang Kandungan dalam respons adalah tepat.

Punca:

Isu ini telah dikesan menggunakan folder kongsi Kotak Maya untuk mengehoskan fail statik. Apabila fail diakses melalui folder kongsi, Virtual Box melakukan caching, menyebabkan versi lapuk fail disampaikan oleh pengendali FileServer.

Contoh:

Pertimbangkan program berikut:

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)
    }
}

Dengan fail HTML:

<code class="html"><!doctype html>
<html>
<body>
    <p>Hello there everyone</p>
</body>
</html></code>

Apabila mengakses halaman ini dari kotak Vagrant, kandungan tidak akan dikemas kini, walaupun selepas menyegarkan penyemak imbas atau mengubah suai fail HTML.

Penyelesaian:

Untuk menyelesaikan isu ini, adalah disyorkan untuk mengelak daripada menggunakan folder kongsi Virtual Box untuk menyediakan fail statik dengan pengendali http.FileServer . Sebaliknya, alihkan fail ke direktori tempatan pada kotak Vagrant dan layankannya dari sana.

Atas ialah kandungan terperinci Mengapa Fail Saya yang Diedit Tidak Dilayan oleh Pengendali Pelayan Fail Go dalam Kotak Maya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn