[PHP] 設置cache/no-cache
分享完整連結 //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 的設定改回來
修改 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/
check-host 從世界各地檢查你的網站能不能連線?
檢測你的網站能不能暢通?這個網站可讓你知道你的網站是不是「網際網路」還是「區域網路」?
[Smarty4] 出現 modifiers 函式不能用的問題
當我把smarty由3版更新到4.5.1版的時候,出現了Using unregistered function xx in a template這樣的錯誤,該如何解決?
[Docker] docker中要怎麼修改影像的名稱,rename image
透過 build來的image如果沒有指定名稱,事後要怎麼修改影像的名稱?
[Rocky9] 安裝node.js 18, node.js 20
原本的nodejs16在使用 quasar dev時出現錯誤,得升級成18版以上
[SSL] Could not read certificate from server.cer 的錯誤排除
在轉換ssl憑證時,出現無法讀取的錯誤,可是怎麼看憑證都很正常,該怎麼解決?
[Linux] 如何能知道我是什麼時候安裝系統的?
linux想知道什麼時候裝系統的?什麼時候建置的?不必憑記憶。