如何在不使用客户端缓存的情况下下载新版本的文件?
How to download new version of file without using the client cache?
我有一个页面,其中 table 包含用户数据和每一行(每个用户都有自己的名片,这是一个引用存储在服务器上的 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>
当用户发送 post 请求时,服务器上先前的 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 附加了一个查询,浏览器将不会使用文档的缓存版本,其编号高于此文件的先前缓存版本。通常这将通过将 ?v=2
或类似的东西添加到 url 来完成。使用 Date.now()
可确保此数字始终高于任何先前缓存的版本。
url + '?v=' + Date.now();
每次都会产生一个唯一的版本号,由于时间只往前数,所以版本号总是比以前的版本大。
您也可以通过在服务器上使用 HTTP header Cache-Control
来解决此问题。
使用 Cache-Control: no-cache, no-store, must-revalidate
会告诉浏览器不要缓存 URL 并始终请求新文件。
从好的方面来说,因为它不使用 JavaScript,这也适用于禁用 JavaScript 的浏览器。
我有一个页面,其中 table 包含用户数据和每一行(每个用户都有自己的名片,这是一个引用存储在服务器上的 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>
当用户发送 post 请求时,服务器上先前的 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 附加了一个查询,浏览器将不会使用文档的缓存版本,其编号高于此文件的先前缓存版本。通常这将通过将 ?v=2
或类似的东西添加到 url 来完成。使用 Date.now()
可确保此数字始终高于任何先前缓存的版本。
url + '?v=' + Date.now();
每次都会产生一个唯一的版本号,由于时间只往前数,所以版本号总是比以前的版本大。
您也可以通过在服务器上使用 HTTP header Cache-Control
来解决此问题。
使用 Cache-Control: no-cache, no-store, must-revalidate
会告诉浏览器不要缓存 URL 并始终请求新文件。
从好的方面来说,因为它不使用 JavaScript,这也适用于禁用 JavaScript 的浏览器。