【发布时间】:2020-04-19 01:44:51
【问题描述】:
我在我的本地主机(Windows 7,Chrome v79.0.3945.130(64 位))上测试了一个 html/js 代码,大约 50% 的时间代码更改没有反映在浏览器中(我在 Dev 中看到它)工具/来源)。
互联网上有很多建议,但似乎都没有:
- 右键单击重新加载并选择“空缓存和硬重新加载” - 在 30% 的情况下无济于事。
- 在 Chrome 开发工具的网络选项卡中禁用缓存 - 没有帮助。
- 在标题中添加
<meta http-equiv="Cache-control" content="no-cache">- 没有帮助。 - 将
<script src="common.js"></script>替换为<script src="common.js?blabla"></script>- 在60% 的情况下有帮助,但在每次更改都是一项繁重的工作后,您需要这样做。此外,它不适用于 html 更改。 - 将文件复制到新文件(如 index.html 到 index2.html)并替换代码中的文件名 - 总是有效,但这是一个更大的苦差事。
当我将代码提交到 github.io 时出现完全相同的问题
请帮我完成,以便网站立即反映代码更改。
编辑:我创建了一个文件 index3.html 并在那里只放了“hello world”。在浏览器中打开文件。更改为“hello world2” - 浏览器更新了内容。更改为“hello world3” - 即使在多次重新加载和“清空缓存和硬重新加载”之后,浏览器仍然显示“hello world2”。我改为“hello world4”——浏览器仍然显示“hello world2”。在 4 小时内,我更改为“hello world5” - 浏览器仍然显示“hello world2”。这个文件是我用基本记事本编辑的。
Edit2:人们一直在问我使用的是什么服务器。这看起来是问题的一部分。不幸的是,我不知道,也不知道我究竟需要做什么来检查它。以下是我目前发现的所有内容:
- 我有
inetpub/wwwroot目录,我在其中放置了 html 和 js 文件和 然后在http://localhost/的浏览器中打开 index.html。 - 我的开发工具中的网络面板如下所示:image link。
- 服务器设置非常快,不需要安装任何其他软件。 IE。我没有使用 node.js。
-
inetpub/wwwroot有 iisstart.htm,当我打开http://localhost/iisstart.htm时,它显示的是 IIS7。
【问题讨论】:
-
我有时会发现在 chrome 开发工具中禁用缓存 + 刷新 + 再次启用缓存 + 刷新有时会解决问题?可能值得一试...
-
您使用的是什么类型的服务器?
-
@Jhecht 我如何检查它?
-
从我在答案中看到的情况来看,您可能会使用参数来解决它。这可能会奏效。但是,当您在 chrome 开发工具中禁用缓存时,通常不需要这样做。所以我的预感是涉及到另一个缓存。在您和服务器之间可以使用任意数量的附加缓存技术。几个例子:服务器端缓存(例如 Varnish)、CDN 缓存(例如 Cloudflare)、来自路由器/防火墙的本地代理(例如 squid-cache)和类似的东西。我也会检查这些。
-
@klm123 不知道这是关于哪个 Web 服务器,不可能告诉您如何更改或检查缓存配置。如果您不知道您的 Web 服务器,一种可能的检查方法是在 devTools 的网络选项卡中:检查加载的
index.html的响应标头中是否有类似X-Powered-By或Server标头的内容,这可能会给网络服务器上的提示。谷歌搜索您的文件路径inetpub/wwwroot强烈指向 IIS 服务器。
标签: javascript html server iis-7 browser-cache