[英]How can I cache dynamic CSS with HTTP headers?
这是该问题的直接重复,但是提供的解决方案不起作用。
作为我维护的WordPress插件的一部分,我目前正在使用以下代码分发动态CSS文件:
public static function buildCustomCss() {
if (1 == intval(get_query_var(self::$query_var))) {
ob_start();
global $css;
$expires = 60 * 60 * 24 * 365; // cache for a year
header('Pragma: public');
header('Cache-Control: maxage=' . $expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');
header('Content-type: text/css');
echo str_replace('>', '>', esc_html($css));
ob_end_flush();
exit;
}
}
标头值与上面引用的问题中的标头值匹配,但Chrome 和 Firefox均拒绝接受缓存请求。 我尝试了多台服务器,每台服务器每次都返回200
响应。 我希望这将证明是比将CSS放入主页更好的解决方案,但是如果我无法进行缓存工作,那么结果将变得更加糟糕。
请求标头(Chrome)的完整列表:
Accept:text/css,*/*;q=0.1
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:<cookie values>
DNT:1
Host:example.org
Referer:http://example.org/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
响应标头的完整列表(已编辑,以包括经过测试的最新标头,包括在pragma
和cache-control
包括public
):
Cache-Control:no-transform,public,maxage=31536000
Connection:keep-alive
Content-Type:text/css; charset=UTF-8
Date:Sun, 30 Mar 2014 22:55:57 GMT
Expires:Mon, 30 Mar 2015 22:55:56 GMT
Pragma:public
Server:nginx
Transfer-Encoding:chunked
如果希望浏览器缓存文件,则应将Cache-control标头设置为public:
header('Cache-control: public');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.