一、關于網(wǎng)站頁面靜態(tài)緩存,如何確保一個頁面可以設置靜態(tài)緩存?
- nginx 會按照目錄層級查找文件,并且默認讀取文件都是(index.html,index.htm,index.php),靜態(tài)頁面緩存就是網(wǎng)頁動態(tài)數(shù)據(jù)加載完后生產一個靜態(tài)的html文件,下次讀取的時候直接讀取靜態(tài)文件,就不需要反復請求數(shù)據(jù)了。所以 nginx 服務器優(yōu)先去匹配請求的路由是否存在緩存文件,若存在就輸出,不存在就走 php 然后生成靜態(tài)文件,下次訪問的時候直接讀取靜態(tài)頁面。
- 接下來就是路由的配置了,通俗的將路由上的一個(/)就是一個目錄,所以為了按照目錄層級去找,控制器中一定不要使用 url 后面帶的參數(shù),比如分頁(?p=1)又或者類型(?t=game),這樣的我們都需要配置到路由里面去,按照指定的參數(shù)生成層級目錄。
- 若路由中帶.html,直接生成對應文件,以(/)結尾則在目錄下生成(index.html)文件。
- 通常緩存都有一個過期時間,在生成靜態(tài)文件的時候我們用到 linux 中的 touch 方法來改變文件的創(chuàng)建時間,將創(chuàng)建時間設置為未來時間,即需要更新緩存的時間,然后配合 corn 腳本定時檢查文件是否過期。
二、刪除靜態(tài)緩存
- twig 模板緩存,目錄(var/cache/twig/),這個是 twig 模板引擎自帶的緩存功能,只需在配置文件中啟用即可。
- (var/cache/public/) php 生成的靜態(tài)緩存文件目錄。
- 首頁(5分鐘)、作品列表(15分鐘)、作品詳情(15分鐘)、其它頁面(1小時)
三、nginx 緩存
- 目前用到的是 fastcgi_cache 來做 nginx 的緩存,主要工作原理是:根據(jù) fastcgi_key 在指定的緩存目錄生成2個目錄層級來存放緩存文件,服務器會先讀未過期的緩存文件,若文件過期會訪問php,重新生成,目前 nginx 緩存設置時間為 5 分鐘。
- 網(wǎng)站 nginx 緩存的目錄為(var/cache/nginx/)
- api 的緩存目錄為(var/cache/nginx、)
- api 的緩存設置思路主要是:沒有數(shù)據(jù)創(chuàng)建,更新操作,不需要用戶授權,只是信息獲取的接口一律設置緩存。緩存的過期時間設置思路是一個 Set::all() 60 秒,一個 load 10 秒,另外一個約束,不能 foreach 集合后再 foreach 里面再使用Set::all(),若出現(xiàn)類似接口,則需優(yōu)化代碼。
四、測試機要更新一個頁面的緩存,最保險的方法是:
- 停止 nginx 和 php 。
- 刪除 api (var/cache/nginx/)所有文件
- 刪除 www (var/cache/twig/) 所有文件
- 刪除 www (var/cache/public/) 所有文件