【问题标题】:Do browsers cache PHP generated CSS and Javascript files?浏览器是否缓存 PHP 生成的 CSS 和 Javascript 文件?
【发布时间】:2012-08-23 06:07:12
【问题描述】:

简单的问题。

浏览器是否会自动缓存 PHP 生成的 CSS 和脚本文件,就像 CSS/JS 文件一样?

【问题讨论】:

  • 使用 firebug 或 webkit 调试器,它会告诉你浏览器是否使用缓存版本。

标签: php javascript css caching browser


【解决方案1】:

当然,除非有明确的行为来防止缓存。浏览器无法知道文件是静态资源还是动态生成的资源。

【讨论】:

  • 我不知道,但它不能反过来工作吗?也就是说,如果 HTTP 标头中没有明确允许,浏览器是否会缓存文件?
  • 并非总是如此,尤其是在使用会话时,因为 PHP 会发送 Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  • @MathieuImbert:“禁止明确行为以防止缓存”。发送无缓存标头是防止缓存的一种方法。
  • @EricJ。是的,对不起,我错过了你的第一句话。
【解决方案2】:

如果 URL 保持不变,并且 HTTP 响应中没有提示告诉浏览器否则,它们可以被缓存。

如果 URL 包含动态信息,浏览器可能无法利用缓存。

通过添加时间戳作为虚拟参数(例如http://host/myfile.php?t=17279273)来更改 URL 是防止缓存的方法之一,因为浏览器会将微小的更改视为新资源。

【讨论】:

  • 时间戳技术不错!
  • 更好:添加最后一次文件修改的时间戳,因此只要没有发生更改,资源就会保持缓存(例如在 php 中:$url="http://host/myfile.php?t=".filemtime("myfile.php");
【解决方案3】:

Jonathon 建议添加时间戳以防止缓存的答案是一个很好的答案。

这些方面的一个有用提示是附加文件的创建/上次修改日期。这样做意味着浏览器会在未更改的情况下缓存文件,但是当您更新文件时,这些更改会强制发送给您的用户。

这并不总是最好的选择,但值得注意。

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2014-07-29
    • 1970-01-01
    • 2010-10-02
    • 2017-07-20
    • 2017-09-30
    相关资源
    最近更新 更多