使用 javascript 强制浏览器文件缓存刷新
Forced browser file cache refresh with javascript
我在 Splunk 中有 python 生成 .docx 报告的脚本。
创建此报告后,我将收到此文件的 link,我在 html/js 仪表板上使用该文件向用户提供下载 link。该文件位于 Splunk 实例内,Splunk 有自己的缓存,但这个缓存已被版本 _bump 清除。
问题(可能)是浏览器正在缓存文件,如果我生成包含不同内容的新报告,那么我会继续下载旧文件而不是新文件。
只有 Empty cache and hard reload
网页才能下载新版本的文件。
我可以通过在 python 中创建具有不同名称的文件来解决这个问题,但这就像最后一个可能的解决方案。我希望只生成 1 份报告。
有没有办法清除此缓存并使用 javascript 进行硬重新加载或如何强制浏览器下载文件的新版本?
浏览器根据给定的 URL 缓存文件。为了通过前端浏览器控制缓存,只需将?cachebust=TIMESTAMP
添加到URL,其中TIMESTAMP就是new Date().getTime()
。由于您将其添加为查询参数,它仍会从后端请求相同的资源,因此您不必在服务器端做任何花哨的事情。
如果您想对其进行版本控制以便更好地控制缓存何时被破坏,您可以使用一个数字,该数字仅在您想要破坏缓存时递增。重要的是 URL 变化。
http://www.example.com/someFile.txt?cacheBust=109230110238
我在 Splunk 中有 python 生成 .docx 报告的脚本。
创建此报告后,我将收到此文件的 link,我在 html/js 仪表板上使用该文件向用户提供下载 link。该文件位于 Splunk 实例内,Splunk 有自己的缓存,但这个缓存已被版本 _bump 清除。
问题(可能)是浏览器正在缓存文件,如果我生成包含不同内容的新报告,那么我会继续下载旧文件而不是新文件。
只有 Empty cache and hard reload
网页才能下载新版本的文件。
我可以通过在 python 中创建具有不同名称的文件来解决这个问题,但这就像最后一个可能的解决方案。我希望只生成 1 份报告。
有没有办法清除此缓存并使用 javascript 进行硬重新加载或如何强制浏览器下载文件的新版本?
浏览器根据给定的 URL 缓存文件。为了通过前端浏览器控制缓存,只需将?cachebust=TIMESTAMP
添加到URL,其中TIMESTAMP就是new Date().getTime()
。由于您将其添加为查询参数,它仍会从后端请求相同的资源,因此您不必在服务器端做任何花哨的事情。
如果您想对其进行版本控制以便更好地控制缓存何时被破坏,您可以使用一个数字,该数字仅在您想要破坏缓存时递增。重要的是 URL 变化。
http://www.example.com/someFile.txt?cacheBust=109230110238