php - 强制通过 header 缓存动态生成的 JS/CSS 文件不适用于所有浏览器

标签 php javascript css caching header

我的网站有很多 JS 和 CSS 文件。为了最大限度地减少来自浏览器的连接请求,我将它们加入到一个 php 文件中。我正在使用 header 参数来强制缓存文件。这是我对 JS 案例的处理方式(CSS 是完全相同的方式):

<?php
ob_start("ob_gzhandler");
$expires= 60 * 60 * 24 * 14;
header('Pragma: public');
header('Cache-Control: max-age=' . $expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');
header('Content-type: text/javascript');
include('file1.js'); echo "\n\n\n";
include('file2.js'); echo "\n\n\n";
/* ... bla bla bla bla ... */
include('fileY.js'); echo "\n\n\n";
include('fileZ.js'); echo "\n\n\n";
ob_end_flush();
?>

这在 Firefox 中工作得很好。对于地球上的其他地方,这些文件没有缓存!它们都很大,所以我有一个恼人的半秒白屏,以便其他浏览器为每个页面请求一次又一次地加载它们。

我想这与 header 的内容长度有关。我尝试了 2-3 件事,但我无法让它发挥作用。有什么建议吗?

提前致谢。 感谢您的帮助。

最佳答案

最好在元素部署时将所有这些 .js 加入一个文件中,并像任何其他文件一样提供该文件,为您的网络服务器配置一个较长的到期时间。

如果您没有部署脚本,那就是另一回事了。 将 header 添加为“Last-Modified”或“ETag”是最好的选择。

此外,我建议构建一次大文件,并且仅在任何 js 发生更改时才重建它。

关于php - 强制通过 header 缓存动态生成的 JS/CSS 文件不适用于所有浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3829467/

相关文章:

php - Magento 部分索引过程的可见性

php - Nginx - 在其他目录和 PHP 中具有 root 的位置

php - 使用 MacBook 作为 Mysql 本地服务器

javascript - 为什么这个异步函数同步运行?

javascript - Quill - 添加图片 URL 而不是上传

html - Textarea 框在点击初始页面加载时移动

php - Laravel - 清除重定向::意图()

javascript - $(window).height() 在 IE10 中不起作用

html - 如何自动填充在 Fireworks 中创建的文本区域?

javascript - 当其他按钮被禁用时隐藏按钮事件