Chrome在本地主机上加载缓存文件

10

我现在在两台不同的机器上遇到了这个问题。

版本号为 63.0.3239.84(官方构建)(64 位),操作系统为 OSX 10.12.6。

Chrome 在 http://localhost:3000 上持续加载旧的缓存文件。唯一能阻止它的方法就是使用无痕浏览模式。如果我使用 cmd + shift + r 快捷键,可以有效刷新一次,但是重新加载后仍然会出现旧文件。

我通常都开着检查器,因此我已经尝试选择 禁用缓存 ,但是这并没有任何作用。我还试过通过 Chrome 的设置删除缓存文件,但也没有效果。

我错过了什么吗?

3个回答

22

最终我意识到了问题所在。我的先前运行在该端口的服务器具有清单文件和适当的服务工作者。这意味着Chrome默认加载这些缓存文件。

为了解决这个问题,我进入了开发者工具>应用程序>清除存储。

现在它按预期工作。


1
在我的情况下,Chrome 由于某种原因生成了本地覆盖。在发现这一点之前,我多次切换端口以解决问题。Chrome 为每个端口创建了我的 index.html 文件的本地覆盖。删除本地覆盖后,服务器实际上传输的内容就正常了。

0

你确定这是Chrome缓存吗?我的意思是,可以通过另一种方式获取所有数据来检查是否真的是Chrome缓存,比如使用curl:

curl http://localhost:3000

如果内容仍未重新加载,则不是 Chrome 的问题,而是像您的 Web 服务器这样的其他问题。

如果您正在运行 Nginx,请不用担心,这是 Nginx 配置中的 sendfile,您可以轻松更改它,只需按照以下步骤进行:

第 1 步 - 使用文本编辑器(例如 vim)打开 nginx 配置文件

vim /etc/nginx/nginx.conf

步骤2 - 搜索包含此文本的行:

sendfile on;

第三步 - 更改为关闭。
sendfile off;

步骤4 - 重新启动您的nginx:

/etc/init.d/nginx restart

注意:如果您正在使用像 Vagrant 这样的虚拟环境,请重新加载它。
vagrant reload

curl 返回正确的响应,Firefox/Safari/Opera 也是如此。Chrome 的隐身模式返回正确的响应。只是为了说明,我没有运行任何 Web 服务器。ps aux 没有显示任何 Web 服务器进程,这纯粹是缓存响应。正如问题中所述,cmd + shift + r 只能工作一次。 - rbhalla
如果您没有使用任何Web服务器来监听3000端口,那么似乎有些困惑?我的意思是,如果您正在使用localhost:3000,那么一定会启动某个服务来使用此端口,对吧?您能检查一下是哪个服务吗?是Angular吗? - Paulo Victor
即使没有运行任何服务,这种情况仍然会发生。curl 可能会返回“连接被拒绝”,但是 Chrome 仍然可以加载页面。在标签中具有相同的 favicon 和相同的 HTML 标题。 - rbhalla
明白了,我看到你刚刚清理了存储数据并修复了它。我认为这个线程很棒,可以帮助其他人映射常见问题。 - Paulo Victor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接