如何确保资源是从服务器而不是缓存中提取的?

How to make sure a resource is pulled from server, not cache?

情况是这样的,我有一个管理项目大纲的网站,用户可以上传PDF到一个弹出窗口window,然后可以在项目的简介部分点击一个link在另一个弹出窗口 window 上查看他们的 PDF 大纲。

目前,如果您上传的 PDF 正在替换旧版本,浏览器仍会显示旧版本的 PDF。我发现显示的是该 PDF 的缓存版本。 PDF 必须保持一致的名称(名为 X 的项目大纲,将始终称为 "Outline X.pdf")

我一直在寻找一种方法来确保显示的内容始终是从服务器中提取的。我不需要从服务器拉取整个页面,只需要某些资源。

感谢您的帮助!

我不知道你使用的是什么语言,因为你没有提供任何代码,所以我不能给你任何代码,但通常最常见的绕过缓存的策略是附加一些字符串(通常是当前时间戳)在 url 的末尾。因此,不是获取“/Outline%20X.pdf”,而是获取 "Outline%20X.pdf?1426697196",其中 1426697196 = 当前时间戳。

您可以如下设置 headers 以防止缓存:

Expires: 0
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate

您还可以将随机查询字符串(如时间戳)附加到文件名。