如何防止浏览器按范围从内存缓存中加载js?

时间:2019-05-08 04:09:15

标签: google-chrome http caching http-status-codes http-content-range

昨晚我在Chrome中打开了我的网站,然后关闭了该标签,但没有关闭浏览器。今天,我无法在新标签页中打开网站,因为jQuery(不使用CDN)遇到语法错误:输入意外结束。

无论我刷新多少次,我的网站始终会遇到此错误。但是硬刷新后,该错误不再发生。

这个问题在最近几个月中屡屡发生。

我检查了Chrome devtool,它说我的jquery.min.js是从内存缓存中加载的。而且它不是一个完整的文件,仅包含jquery库的一部分。这就是为什么我会出现语法错误。

我从Google做过一些研究:

  

内存缓存的生存期附加到呈现过程的生存期,该过程大致对应于一个制表符。

因此,可以肯定的是,如果我创建一个新标签来访问我的网站,则不应从内存缓存中加载jQuery。

如果我在新标签页中访问网站,我希望浏览器不会再次从内存中加载文件。

有什么办法可以找到问题源并进行修复?

编辑(2019-05-13):

今天再次遇到此错误,但幸运的是,我发现新观点似乎有助于解决此问题。

这是该请求: Request info

查看状态码是206部分内容(来自内存缓存)。

我不知道为什么我的请求标头包含“ Range”字段。

1 个答案:

答案 0 :(得分:0)

您无法在浏览器中检测到newtab并加载jquery.min.js,但可以通过将时间戳记添加到lib后缀中来避免从缓存加载,如下所示。

http://yoursite.com/lib/js/jquery.min.js?1557301884

您可以通过两种方式实现这一目标

  • 案例:1 如果您使用服务器端页面呈现方式(PHP,JSP),只需打印时间戳记

  • 案例:2 如果客户端意味着您需要执行一些JavaScript任务

相关问题