无法清除缓存以刷新网页

Having trouble clearing cache to refresh webpage

这听起来像是一个非常基本的问题,但我觉得我已经尝试了所有方法。

这是我之前 this post 的后续行动,在那里我解决了这个问题,但它又回来了。

总而言之,我正在对我网站 contact page 上的 contact.css 文件进行一些更改,这时我注意到所做的更改在离线状态下有效但未在线显示。我将此问题缩小为上述 post 的缓存问题(其他人可以看到更改,但我看不到)。

在上面的示例中,我无法让我的网站显示为 background-color:blue - 最终成功了,我想我已经修复了它...所以我将颜色改回正常然后砰的一声,它再次停止刷新更改。

所以我认为这是某种缓存问题,但在我的一生中,我无法正确清除缓存以便刷新并查看更改。

以下是我已经尝试过的方法:

我正在使用 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 查询参数是否会做同样的事情,也许其他人可以对此有所了解。