当前位置: 首页 > 面试题库 >

http.FileServer缓存文件并在编辑后提供旧版本

惠泳
2023-03-14
问题内容

go的核心部分存在http包问题。尽管响应正文中的Content-Length是正确的,但似乎文件内容已缓存。这里展示的是我正在编写的应用程序的简化版本。

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

现在假设我们有一个非常简单的html页面:

<!doctype html>
<html>
<body>
    <p>Hello there</p>
</body>
</html>

我执行go程序并http://localhost:8080在浏览器中访问以显示:

Hello there

检查响应头,我可以看到以下内容:

Status Code:200 OK
Accept-Ranges:bytes
Content-Length:68
Content-Type:text/html; charset=utf-8
Date:Fri, 20 Dec 2013 10:04:03 GMT
Last-Modified:Fri, 20 Dec 2013 10:03:32 GMT

现在,我编辑html文件,以便<p>标记包含Hello there everyone并重新加载页面。我得到以下内容:

Hello there

再次查看响应标题

Status Code:200 OK
Accept-Ranges:bytes
Content-Length:77
Content-Type:text/html; charset=utf-8
Date:Fri, 20 Dec 2013 10:04:34 GMT
Last-Modified:Fri, 20 Dec 2013 10:04:14 GMT

因此,Content- Lengthhttp.FileServer处理程序已更改以及最后修改的内容,但未更改该内容。即使关闭程序并执行此问题,也会发生go run src/.../main.go。到目前为止,我发现清除文件的明显缓存版本的唯一方法是重新启动运行程序的计算机。

我尝试了以下方法:

  • 在Win / Ubuntu / OSX 10.8.5上执行程序
  • 浏览golang.org/src上的功能/接口链,以查看所提供的文件是否缓存在磁盘上的任何位置

任何帮助,将不胜感激。


问题答案:

好的,所以在忽略问题并继续前进几个星期之后,我终于弄清了问题所在。

为了使我的主计算机完全不受定制,我使用Vagrant使用golang,nodejs和php开发应用程序。看来,在Virtual
Box共享上运行go应用程序并在该共享上存储所有html文件都会导致此问题。

为了证明这一点,我打开了一个Vagrant框,将文件从/ vagrant共享目录复制到/ home / vagrant / testing
/,然后复制了前面列出的所有操作。这使问题消失了。

因此,换句话说,不要使用Virtual Box共享文件夹托管打算在http.FileServer方法中使用的文件。



 类似资料:
  • 我有以下问题。我有EditText和TextWatcher,它们根据一些规则格式化输入文本。在TextChanged()之后的方法中,我格式化它。然后我有格式化的字符串,我想用格式化的值替换EditText的旧值。接下来我们有两个选项: < li >使用EditText.setText() < li >使用Editable.replace() 如果我们使用第一个选项,EditText的工作速度非常

  • 当我更新Service Worker时,我关闭并重新打开页面,并获得新的Service Worker已安装并激活的控制台日志,旧的缓存已被删除。但是,列出要添加到缓存中的文件不会再次从服务器获取,它们是几小时前的旧版本。没有办法让它更新文件,除非清除Chrome开发工具中的存储。 安装新版本时,如何让我的服务人员使用新文件填充其缓存? 例如,当服务人员更新时,“stylesheet.css”仍然是

  • 本文向大家介绍php单文件版在线代码编辑器,包括了php单文件版在线代码编辑器的使用技巧和注意事项,需要的朋友参考一下 密码加密方式:  * md5(自设密码+$ace) //$ace为cdn镜像地址 使用方法:  * 1.确认 $pwd 变量值为 false, 上传本文件到PHP空间并访问  * 2.第一次访问提示设置密码,设置密码并牢记  * 3.使用第一次设置的密码登录后,默认编辑的是本ph

  • vi 可以在命令行下编辑文件。 vi 要编辑的文件路径 练习:编辑文件 vi ninghao-project/README.md 这样会打开要编辑的文件,使用方向键可以移动光标。 编辑 想要编辑按一下小 i ,这样会进入到 vi 编辑器的编辑模式。这时你可以编辑文件里的内容,修改完成以后,按 esc 可以退出编辑模式。 搜索 搜索文件里的内容可以按 / ,然后输入要搜索的关键词,n 继续查找,

  • 按照一般app的设计,都是主应用,和用户目录下的缓存文件,把用户自定义的或使用生成的文件都放到缓存文件目录里。鉴于此,我们来找找code.app的缓存文件,或许能发现点有用的东西 可参照 https://code.visualstudio.com/docs/customization/userandworkspace 理解 缓存目录详情 目录是 /Users/sang/Library/Applic

  • 我使用数据编辑器。当我尝试编辑并将其发布到服务器时,该行不断消失。刷新页面后,我可以看到实际更新的数据。 这是我的代码片段。 下面是服务器端脚本返回的JSON数据: 这个错误的可能原因是什么?