Go의 http.FileServer는 지정된 파일 시스템에서 정적 파일을 제공하도록 설계되어 효율적이고 편리한 방법을 제공합니다. 웹 콘텐츠를 호스팅합니다. 그러나 특정 상황에서는 예기치 않은 캐싱 동작이 발생하여 오래된 파일이 제공될 수 있습니다.
Virtual Box 공유 폴더를 사용하여 http.FileServer용 파일을 저장할 때 이러한 문제 중 하나가 발생합니다. 이 시나리오에서 문제는 호스트 운영 체제와 게스트 운영 체제 간 이러한 파일의 동기화된 액세스와 관련되어 있습니다.
설명하기 위해 제공된 예를 고려해 보겠습니다.
<code class="go">http.Handle("/", http.FileServer(http.Dir("./www/"))) err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println(err) }</code>
HTML 사용 다음과 같은 파일을 사용하세요.
<code class="html"><!doctype html> <html> <body> <p>Hello there</p> </body> </html></code>
처음에 제공되면 콘텐츠가 올바르게 표시되고 응답 헤더에 적절한 콘텐츠 길이와 마지막으로 수정된 타임스탬프가 표시됩니다.
그러나 HTML을 변경하면 파일을 다운로드하고 페이지를 다시 로드해도 원본 콘텐츠는 계속 표시됩니다. 이는 호스트와 게스트 간의 동기화 문제로 인해 수정된 파일이 운영 체제에서 제대로 캐시되지 않기 때문입니다. 이 동작은 프로그램을 종료하고 다시 시작한 후에도 관찰됩니다.
이 문제에 대한 해결책은 http.FileServer용 파일을 호스팅할 때 Virtual Box 공유 폴더를 사용하지 않는 것입니다. 파일을 게스트 운영 체제에 직접 저장하면 동기화 문제가 제거되어 파일 서버가 파일을 올바르게 캐시하고 업데이트된 콘텐츠를 제공할 수 있습니다.
위 내용은 Virtual Box 공유 폴더를 사용할 때 My Go http.FileServer가 오래된 파일을 제공하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!