【问题标题】:Is it true "JavaScript files are not reliably cached by browsers, CSS files are"是真的“浏览器不能可靠地缓存 JavaScript 文件,CSS 文件是”
【发布时间】:2011-06-11 05:04:42
【问题描述】:

如本网站所述

请注意,虽然 JavaScript 文件是 不能被浏览器可靠地缓存,CSS 文件是。

http://www.websiteoptimization.com/speed/tweak/http/

【问题讨论】:

  • 我会怀疑这样的说法,因为这篇文章没有提供任何解释或支持。我也会怀疑任何仍然将 JavaScript 代码包装在 HTML 注释中的人,但也许这就是我。
  • 我同意语法。另外,请注意文章的撰写时间:“2003 年 12 月 17 日”。即使当时已纠正(我不知道它是否正确或仍然正确),此时它也很容易过时。
  • 删除该站点。使用YSlow 建议。

标签: javascript css performance


【解决方案1】:

我所知道的浏览器“可靠地缓存”各种静态数据(包括 JS 和 CSS,以及图像、HTML 等),只要它们提供适当的缓存支持标头即可。也许文本意味着与实际缓存不同的东西,例如只解析一次然后保持一些有效的内部格式......?我不知道哪些浏览器对不同类型的文件这样做或不这样做,但至少在这个假设下我可以看到为什么(例如)CSS 可能比 JS 更容易让浏览器保持预处理形式。

【讨论】:

    【解决方案2】:

    我看不出有任何理由明确声明 JavaScript 文件。但是,我可以看到一个论点,即无论发送的文件类型如何,缓存通常都不可靠,具体取决于服务器配置、发送的其他标头、代理和缓存以及最终用户浏览器的配置方式。

    【讨论】:

      【解决方案3】:

      在静态资源的 HTTP 标头中设置过期日期或最长期限会指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。

      如果我们想实际缓存资源,这很好。如果我们想强制一个新的下载集 no-cache,它会强制缓存在每次释放缓存副本之前将请求提交给源服务器进行验证。这对于确保尊重身份验证(与公共身份相结合)或保持严格的新鲜度而不牺牲缓存的所有好处很有用。

      HTTP Server-Specified Expiration - specs

      【讨论】:

      • 您发布了两个相同的答案,这些答案已被标记,这没关系,但如果您为每个问题定制答案,我们会更喜欢它。然而,答案是从两个不同的来源剽窃的。来自Optimize caching - Overview 的第一句话。第三和第四句来自:Cache-Control HTTP Headers - no-cache。提供指向源材料的链接并将其格式化为引用而不是冒充您自己的会更好、更公平。谢谢。
      猜你喜欢
      • 2011-09-12
      • 2014-07-29
      • 2012-08-23
      • 2010-10-02
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      相关资源
      最近更新 更多