[精讚] [會員登入]

[PHP] 設置cache/no-cache

無論我的網頁怎麼設置meta,伺服器總是丟出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 的設定改回來

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/

 

END
你可能有興趣

[地理] 澳洲柏斯的位置竟然比台灣還要西邊

這近我驚奇的發現,澳洲柏斯的精度竟然比臺灣甚至今晚還要來的西邊

WarSpotting 統計俄國在烏克蘭戰爭中到底是損失了多少軍事裝備或人員

這個網站可以看到俄羅斯在戰場上的軍事人員裝備損失,非常詳細

Mac上 vim的複製貼上不能用

在freebsd系統中發現vim裡的command+c沒辦法選取複製,但command+v可以貼上

check-host 從世界各地檢查你的網站能不能連線?

檢測你的網站能不能暢通?這個網站可讓你知道你的網站是不是「網際網路」還是「區域網路」?

[Smarty4] 出現 modifiers 函式不能用的問題

當我把smarty由3版更新到4.5.1版的時候,出現了Using unregistered function xx in a template這樣的錯誤,該如何解決?

[Docker] docker中要怎麼修改影像的名稱,rename image

透過 build來的image如果沒有指定名稱,事後要怎麼修改影像的名稱?