使用apache的mod_disk_cache做緩存,不能緩存開啓了session的php頁面

在使用mod_disk_cache做頁面緩存時,發現有些php無法緩存,在每次訪問頁面的時候,http響應頭裏都會返回以下行項頭信息
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache

通過在apache及php的源代碼查找,最後在php源代碼目錄下的ext/session/session.c中發現了以下代碼:
CACHE_LIMITER_FUNC(nocache)
{
 ADD_HEADER("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
 /* For HTTP/1.1 conforming clients and the rest (MSIE 5) */
 ADD_HEADER("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
 /* For HTTP/1.0 conforming clients */
 ADD_HEADER("Pragma: no-cache");
}
就是這些代碼設置了http響應頭阻止了mod_disk_cache對php文件的緩存
這說明是因爲開啓了php的session功能導致的php頁面無法緩存
如果有必須對使用開啓了session功能的php頁面進行緩存的話,可以通過修改apache的配置來實現:
用LoadModule headers_module modules/mod_disk_cache.so加載headers_module模塊,
然後在httpd.conf中(主配置文件、<VirtualHost>、<Directory>、.htaccess文件 等配置段)添加以下配置項即可:
Header unset Expires
Header unset Cache-Control
Header unset Pragma
Header set Cache-Control "public, max-age=259200"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章