[精讚] [會員登入]

[PHP] 設置cache/no-cache

無論我的網頁怎麼設置meta,伺服器總是丟出no-cache

此文完整連結 http://n.sfs.tw/m10537

複製連結 [PHP] 設置cache/no-cache@精讚
(文章歡迎轉載,請尊重版權註明連結來源)
2018-12-25 21:58:35 By 瘦河馬

今天遇到一個問題:

無論我的網頁怎麼設置meta,伺服器總是丟出no-cache

我試著在 httpd.conf 中加入 cache的設置

<IfModule mod_headers.c>
  <filesmatch "\.(ico|flv|gif|swf|eot|woff|otf|ttf|svg)$">
  Header set Cache-Control "max-age=2592000, public"
  </filesmatch>
</IfModule>

無效

我在檔頭放了 meta

<meta http-equiv="Cache-control" content="public">

無效

...三個小時後

我發現要修改 php.ini

; 預設是 nocache,改成 public,如果要關掉cache的話,這裡設定成 nocache即可
session.cache_limiter = public

; 預設是 180 分,改成 43200 分(一個月) 這是最大值
session.cache_expire = 43200

然後重啟 apache就好了

然後,網站就壞了

後來我一直推敲,我想要有cache,但是不能給session cache,不然就會一直清不掉 session 登出也沒作用


後來我把 php.ini 的設定改回來

session.cache_limiter = nocache

 

修改 httpd.conf

<filesMatch "\.(php)$">
  FileETag None
  <ifModule mod_headers.c>
     Header unset ETag
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
     Header set Pragma "no-cache"
     Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
  </ifModule>
</filesMatch>


<filesMatch "\.(html|css|jpg|png|gif|ico|js)$">
  <ifModule mod_headers.c>
     Header set Cache-Control "max-age=2402000, public"
  </ifModule>
</filesMatch>

讓我的程式不 cache,但是其他的檔cache。正常了。搞了好久。

 

其他應注意事項

1. 如果有用 mod_expires,會由設定的順序決定。
2. 如果瀏覽器已經 cache,除非你強制清掉,否則他會到 expires 後才會讀取新的內容
3. php.ini 的 session cache 千萬別打開,如果已經打開,要清掉session 只能把目錄中的檔案殺掉,預設在 /var/lib/php/session/

 

你可能有興趣

更新PHP5.5後readfile檔案無法讀取

最近把 centos 更新到5.5的版本後,原本php的函式 readfile("http://domain.

日語學習的小抄

意外發現這裡有日語學習的小抄紙(Cheat sheet),有提供一頁免費的。

[JAVA] 判斷是否為NULL空值的方法

在java中判斷是否為空值

[PHP] 設置cache/no-cache

無論我的網頁怎麼設置meta,伺服器總是丟出no-cache

tar 解壓到指定目錄

要把tar檔解壓到指定的目錄

[Gigapixels] 九州阿蘇火山 あそかさん

天氣非常的陰,不過沒什資格挑剔,不知拍的成不成功。