1. 程式人生 > >Thinkphp 3.2中控制頁面不快取

Thinkphp 3.2中控制頁面不快取

[我的掘金通道](https://juejin.im/post/5b0666be6fb9a07ab459060d)

最近開發WAP網站時,最討厭的就是back鍵,會造成些麻煩事。不過,問題總有辦法解決。

有些頁面,點選back鍵回退會載入快取,這不是想要的,所以希望能夠控制該頁面不快取,每次請求都需要從伺服器獲取最新資料。

解決思路就是通過控制 HTTP 的Cache-control 頭

![image](http://upload-images.jianshu.io/upload_images/2376873-9430d2fe3abc1f43?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

可以看到,Thinkphp 3.2 預設的Cache-control 為 private

那是因為配置檔案中預設設定為 private


![image](http://upload-images.jianshu.io/upload_images/2376873-7f8fa48005716d81?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

頁面在渲染的時候將這個配置中的值設定為 Cache-control 頭


![image](http://upload-images.jianshu.io/upload_images/2376873-88a2fed7ee3bbac7?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

那根據以上資訊,一開始我只想到兩種解決辦法:

1、修改配置中的值  =>   不現實,全域性修改了

2、改寫原始碼        =>   TP不可能這麼傻


最後的解決辦法是:在控制頁面不快取的方法中設定 `C('HTTP_CACHE_CONTROL',"no-store");`
![image](http://upload-images.jianshu.io/upload_images/2376873-7e4120004aaedadf?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

那麼順便再鞏固下 Cache-control 頭的一些引數設定:

具體參考  [MDN 的web docs](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Cache-Control)

>不積跬步無以至千里