javascript - 如何在不使用客户端缓存的情况下下载新版本的文件?

标签 javascript html browser-cache

我有一个页面,其中有包含用户数据和每一行的表格(每个用户都有自己的名片,这是一个引用存储在服务器上的 pdf 的标签。

   <td class="business_card">
    <a href="/static/users_documents/9/business_card.pdf" target="_blank">
    <img src="/static/images/business_card.png" name="business_card" alt="business_card_image">
    </a>
   </td>

当用户发送发布请求时,服务器上先前的 pdf 文件将被删除并创建新的 pdf。 但是,问题是浏览器缓存了旧版本的文件,我必须每次按 CTRL+F5 来硬刷新缓存,然后我才能从服务器而不是缓存中看到文件。

我需要使用 JavaScript 来清除缓存吗?
另外,我对页面的标记引用如下:

https://192.168.2.244/static/users_documents/9/business_card.pdf

该页面的 html 是由 Firefox 创建的,用于显示我的 pdf 文件。

一些可能有帮助的附加信息是我在 Ubuntu 16.04.3 上使用 Nginx 服务器。

最佳答案

为了扩展 @hindmost 在评论中所说的内容,如果 URL 附加了查询,并且查询的数字高于该文件之前缓存的版本,则浏览器将不会使用该文档的缓存版本。通常,这可以通过在 url 中添加 ?v=2 或类似内容来完成。使用 Date.now() 可确保此数字始终高于任何以前缓存的版本。

url + '?v=' + Date.now(); 每次都会产生一个唯一的版本号,并且由于时间只向前计数,因此该数字将始终大于前一个版本号版本。

关于javascript - 如何在不使用客户端缓存的情况下下载新版本的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53207420/

相关文章:

JQUERY 缓存如果发布到表单后后退按钮 - JQUERY fadeIn 仍然可见

c# - 无法使用 jquery mvc 4 加载内容

caching - Safari 不会跨域缓存资源

javascript - angularjs:用于显示一张图像与另一张图像的 if 语句

html - 启用硬件加速时不是绝对的

javascript - 使用 js 创建两个元素,然后在另一个函数中访问它们

html - 为什么一个 div 没有显示在另一个 div 中?

android - 两个 WebView 之间共享缓存

javascript - JavaScript 对象中具有相同值的多个键

javascript - 单击两次关闭菜单下拉菜单