【发布时间】:2010-11-12 18:48:41
【问题描述】:
我已经完成了一些关于如何 gzip 压缩 css 文件的教程,您可以在其中创建一个公共 php 文件以包含 css 文件并进行压缩。问题是我无法让它缓存我的 css 文件。我正在使用 firebug 作为参考,实际上我已经尝试使用相同的代码来压缩一些 javascript 并且它可以很好地缓存它。
代码如下:
如果(扩展加载('zlib')){ ob_start('ob_gzhandler'); } $偏移量 = 60 * 60 * 24 * 31; header('内容类型:文本/css'); header ('Cache-Control: max-age=' . $offset . ', must-revalidate'); header ('Expires: ' . gmdate ("D, d M Y H:i:s", time() + $offset) . ' GMT'); ob_start("压缩"); 函数压缩($缓冲区){ // 删除评论、空格、结束 ;'s $buffer = preg_replace('#/\*.*?\*/#s', '', $buffer); $buffer = preg_replace('/\s*([{}|:;,])\s+/', '$1', $buffer); $buffer = preg_replace('/\s\s+(.*)/', '$1', $buffer); $buffer = str_replace(';}', '}', $buffer); $buffer = str_replace('{', '{', $buffer); 返回$缓冲区; } 包括('global.css'); 如果(扩展加载('zlib')){ ob_end_flush(); }然后我只是将我的 php 文件作为 css 文档引用到其他页面上。 如您所见,我尝试将最大年龄添加到组合中,但也被证明是不成功的。
这是响应标头
日期 格林威治标准时间 2009 年 7 月 21 日星期二 19:59:19 服务器 Apache/1.3.41 (达尔文) PHP/4.4.9 X-Powered-By PHP/4.4.9 缓存控制 max-age=2592000,必须重新验证 过期 格林威治标准时间 2009 年 8 月 20 日星期四 19:59:19 内容编码 压缩包 各不相同 接受编码 活着 超时=15,最大值=93 联系 活着 传输编码 分块 内容类型 文本/CSS有什么我遗漏的,或者更好的方法吗?
谢谢,
编辑:
检测文件是否已更改并在未更改时发送 304 的脚本结合适当的标头已解决了此问题。
亚瑟
【问题讨论】: