无法清除缓存以刷新网页
Having trouble clearing cache to refresh webpage
这听起来像是一个非常基本的问题,但我觉得我已经尝试了所有方法。
这是我之前 this post 的后续行动,在那里我解决了这个问题,但它又回来了。
总而言之,我正在对我网站 contact page 上的 contact.css
文件进行一些更改,这时我注意到所做的更改在离线状态下有效但未在线显示。我将此问题缩小为上述 post 的缓存问题(其他人可以看到更改,但我看不到)。
在上面的示例中,我无法让我的网站显示为 background-color:blue
- 最终成功了,我想我已经修复了它...所以我将颜色改回正常然后砰的一声,它再次停止刷新更改。
所以我认为这是某种缓存问题,但在我的一生中,我无法正确清除缓存以便刷新并查看更改。
以下是我已经尝试过的方法:
- 正在 Chrome、Firefox 和 Opera
上清除缓存(多次)
- Chrome、Firefox 和 Opera 上的硬刷新
- 通过 Chrome 和 Firefox 上的开发工具禁用缓存(这最初有效然后在我重新更新网站时停止工作)
- 多次检查CSS文件是否正确上传,文件路径是否正确。这已得到确认,因为其他人看到了正确的更改。
- 刷新了我的 DNS
- 从我的 ISP DNS 更改为 google 的 8.8.8.8 + 8.8.4.4
我正在使用 HostGator 来托管我的网站,我现在想知道这是否与他们有关?我现在真的不知道。
这是我在网上看到的:
以下是我应该在我的网站的离线版本上看到的以及我确实看到的:
您是否尝试过在 Chrome 中使用隐身模式?
我注意到你说 "I'd really like to get to the bottom of the underlying issue" 所以我想我会写一个答案来提供一些选项(如果有人想让我添加其他选项,请随时添加评论)。总的来说,确定根本原因可能比解决整体问题要困难得多,但让我们从我能想到的可能原因开始:
- 多个 CDN 服务器需要一段时间才能更新,因此一些正在返回旧数据(您的当前会话)而一些正在返回新数据(隐身)
- 服务器会话缓存,因此当您在一个 http 上下文会话中重新加载页面时,您会返回相同的内容(例如,我在产品搜索查询中看到过这一点)
解决这个问题的方法相对简单,称为缓存清除。基本上,每次更新源代码时,只需在查询字符串、文件名或其他内容中添加一个唯一键,使 url 唯一。例如,对于您的 css,您可以 link https://path/to.css?v2.0.1
并不断增加版本号。如果您将 webpack 用于构建输出,它们有一个 content hash variable,您可以将其用作文件名中的标记。
至于 CDN 可能缓存过时的内容...内容哈希解决方案将解决该问题,因为它是一个完全不同的文件名,因此如果 CDN 没有它,它将从根目录获取它在它的缓存中。我不确定 url version 查询参数是否会做同样的事情,也许其他人可以对此有所了解。
这听起来像是一个非常基本的问题,但我觉得我已经尝试了所有方法。
这是我之前 this post 的后续行动,在那里我解决了这个问题,但它又回来了。
总而言之,我正在对我网站 contact page 上的 contact.css
文件进行一些更改,这时我注意到所做的更改在离线状态下有效但未在线显示。我将此问题缩小为上述 post 的缓存问题(其他人可以看到更改,但我看不到)。
在上面的示例中,我无法让我的网站显示为 background-color:blue
- 最终成功了,我想我已经修复了它...所以我将颜色改回正常然后砰的一声,它再次停止刷新更改。
所以我认为这是某种缓存问题,但在我的一生中,我无法正确清除缓存以便刷新并查看更改。
以下是我已经尝试过的方法:
- 正在 Chrome、Firefox 和 Opera 上清除缓存(多次)
- Chrome、Firefox 和 Opera 上的硬刷新
- 通过 Chrome 和 Firefox 上的开发工具禁用缓存(这最初有效然后在我重新更新网站时停止工作)
- 多次检查CSS文件是否正确上传,文件路径是否正确。这已得到确认,因为其他人看到了正确的更改。
- 刷新了我的 DNS
- 从我的 ISP DNS 更改为 google 的 8.8.8.8 + 8.8.4.4
我正在使用 HostGator 来托管我的网站,我现在想知道这是否与他们有关?我现在真的不知道。
这是我在网上看到的:
以下是我应该在我的网站的离线版本上看到的以及我确实看到的:
您是否尝试过在 Chrome 中使用隐身模式?
我注意到你说 "I'd really like to get to the bottom of the underlying issue" 所以我想我会写一个答案来提供一些选项(如果有人想让我添加其他选项,请随时添加评论)。总的来说,确定根本原因可能比解决整体问题要困难得多,但让我们从我能想到的可能原因开始:
- 多个 CDN 服务器需要一段时间才能更新,因此一些正在返回旧数据(您的当前会话)而一些正在返回新数据(隐身)
- 服务器会话缓存,因此当您在一个 http 上下文会话中重新加载页面时,您会返回相同的内容(例如,我在产品搜索查询中看到过这一点)
解决这个问题的方法相对简单,称为缓存清除。基本上,每次更新源代码时,只需在查询字符串、文件名或其他内容中添加一个唯一键,使 url 唯一。例如,对于您的 css,您可以 link https://path/to.css?v2.0.1
并不断增加版本号。如果您将 webpack 用于构建输出,它们有一个 content hash variable,您可以将其用作文件名中的标记。
至于 CDN 可能缓存过时的内容...内容哈希解决方案将解决该问题,因为它是一个完全不同的文件名,因此如果 CDN 没有它,它将从根目录获取它在它的缓存中。我不确定 url version 查询参数是否会做同样的事情,也许其他人可以对此有所了解。