问题
我正在做一个实验,需要一些帮助。
我已经创建了两个文件。
main-real.css
这是一个标准的普通的ol'css文件,并且
主.css
它由PHP解析并具有
include()
它获取以前的真实css文件。
这是密码
主.css
:
include("main-real.css");
?>
然后我在我的
.htaccess接口
要使用PHP解析此css文件的文件:
AddHandler application/x-httpd-php5 .css
Header Set Content-Type "text/css"
这在运行Apache的PHP 5.2服务器上非常有效。
问题是浏览器似乎没有缓存此文件,或者至少没有返回
304 Not Modified
状态代码,如常规的un PHP解析的CSS文件。
以下是
main-real.css
如果直接访问:
RESPONSE HEADERS
Date..............Thu, 18 Nov 2010 22:10:57 GMT
Server............Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Last-Modified.....Thu, 18 Nov 2010 22:10:23 GMT
Etag.............."11b010a-26-4955b0e6671c0"
Accept-Ranges.....bytes
Content-Length....38
Content-Type......text/css
REQUEST HEADERS
Accept.............text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language....en-us,en;q=0.5
Accept-Encoding....gzip,deflate
Accept-Charset.....ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive.........115
Connection.........keep-alive
Cookie.............fc=fcVal=7625790752294348480
If-Modified-Since..Thu, 18 Nov 2010 22:10:23 GMT
If-None-Match......"11b010a-26-4955b0e6671c0"
Cache-Control......max-age=0
下面是解析的PHP的头文件
主.css
:
RESPONSE HEADERS
Date...............Thu, 18 Nov 2010 22:11:11 GMT
Server.............Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By.......PHP/5.2.11
Content-Type.......text/css
Keep-Alive.........timeout=5, max=97
Connection.........Keep-Alive
Transfer-Encoding..chunked
REQUEST HEADERS
Accept.............text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language....en-us,en;q=0.5
Accept-Encoding....gzip,deflate
Accept-Charset.....ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive.........115
Connection.........keep-alive
Cookie.............fc=fcVal=7625790752294348480
Cache-Control......max-age=0
我尝试过用各种方法修改http头,添加max age、last modified和其他一些方法,但都没有成功。我有什么遗漏或误解吗?
解决方案和最终代码
缺少的主要代码是我需要发送
Last-Modified
在include()之前的头。这需要在PHP文件中完成!我以前试过添加
上次修改时间
使用.htaccess
Header set
指令,尽管它添加了适当的头,但它没有触发缓存。
这是我最后的密码
主.css
有着遥远的未来
Expires
标题和
Cache-Control
好办法。
$last_modified = date("D, d M Y H:i:s \G\M\T", filemtime("main-shared.css"));
$expiration = date("D, d M Y H:i:s \G\M\T", strtotime('+1 year'));
header("Cache-Control: public, no-transform");
header("Expires: $expiration");
header("Last-Modified: $last_modified");
include("main-shared.css");
?>