php web開發中的快取

2021-07-25 09:19:19 字數 2809 閱讀 8216

快取的作用:減少記憶體,cpu資源的消耗

快取中需要關注的問題:

1 快取命中率

2 快取的更新策略

3 快取單條資料的最大值

4 快取總量的大小

html meta標籤控制快取

http控制快取的機制–如果有快取

1 先讀取etag- ----if-not-match

2 last-modified------if-modified-since

expires策略:expires是web伺服器響應訊息頭欄位,在響應http請求時告訴瀏覽器在過期時間前瀏覽器可以直接從瀏覽器緩訪問資料,而無需再次請求。不過expires 是http 1.0的東西,現在預設瀏覽器均預設使用http 1.1,所以它的作用基本忽略。expires 的乙個缺點就是,返回的到期時間是伺服器端的時間,這樣存在乙個問題,如果客戶端的時間與伺服器的時間相差很大(比如時鐘不同步,或者跨時區),那麼誤差就很大,所以在http 1.1版開始,使用cache-control: max-age=秒替代。

cache-control策略(重點關注):cache-control與expires的作用一致,都是指明當前資源的有效期,控制瀏覽器是否直接從瀏覽器緩訪問資料還是重新發請求到伺服器取資料。只不過cache-control的選擇更多,設定更細緻,如果同時設定的話,其優先順序高於expires

值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age

各個訊息中的指令含義如下:

public指示響應可被任何快取區快取。

private指示對於單個使用者的整個或部分響應訊息,不能被共享快取處理。這允許伺服器僅僅描述當使用者的部分響應訊息,此響應訊息對於其他使用者的請求無效。

no-cache指示請求或響應訊息不能快取,該選項並不是說可以設定」不快取「,容易望文生義~

no-store用於防止重要的資訊被無意的發布。在請求訊息中傳送將使得請求和響應訊息都不使用快取,完全不存下來。

max-age指示客戶機可以接收生存期不大於指定時間(以秒為單位)的響應。

min-fresh指示客戶機可以接收響應時間小於當前時間加上指定時間的響應。

max-stale指示客戶機可以接收超出超時期間的響應訊息。如果指定max-stale訊息的值,那麼客戶機可以接收超出超時期指定值之內的響應訊息。

last-modified/if-modified-since:last-modified/if-modified-since要配合cache-control使用。

etag/if-none-match:etag/if-none-match也要配合cache-control使用。

**需要加速**的訪問速度,主要手段有使用cdn和反向**。

sdn和反向**的基本原理都是快取,區別在於cdn部署在網路提供商的機房,使使用者在請求**服務時,可以從距離自己最近的網路提供商機房獲取資料;

而反向**則部署在**的中心機房,當使用者請求到達中心機房後,首先訪問的伺服器反向**伺服器,如果反向**伺服器中快取著使用者請求的資源,就將其直接返回給使用者。

使用這兩個技術,都是為了:一方面加快使用者訪問速度,另一方面也減輕了後端伺服器的負載壓力。

檔案快取

我們可以直接訪問靜態頁面,

opcache

opcache 函式

opcache_compile_file — 無需執行,即可編譯並快取 php 指令碼

opcache_get_configuration — 獲取快取的配置資訊

opcache_get_status — 獲取快取的狀態資訊

opcache_invalidate — 廢除指令碼快取

opcache_is_script_cached —

opcache_reset — 重置位元組碼快取的內容

php的中間位元組碼可以快取在檔案,如果**沒有變動下次不用重新編譯,直接指向

web伺服器快取

nginx的快取

在http段加入**配置快取引數

proxy_connect_timeout 5;

proxy_read_timeout 60;

proxy_send_timeout 5;

proxy_buffer_size 16k;

proxy_buffers 4 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

proxy_temp_path /home/temp_dir;

proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:50m inactive=20m max_size=30g;

memcache的介紹

redis的介紹

mysql也可以快取的

query_cache_size = 268435456

query_cache_type = 1

query_cache_limit = 1048576 以上語句的設定中 query_cache_size 是分配256m記憶體給query cache;query_cache_type=1,是給所有的查詢做cache;query_cache_limit 是指定個別的查詢語句1mb的記憶體

mysql快取

nginx快取

http協議快取參考

cdn和反向**

PHP web開發中RSA加密解密簡單示例

前言 rsa演算法可以說是大名鼎鼎,廣泛應用於非對稱加密和數字簽名認證!感興趣的朋友完全可以深入的學習一下rsa演算法並嘗試 實現,相信一定可以極大的提高 能力,個人也是計畫著要抽時間好好研究學習一下。本文的目的只是示例如何應用大神的 實現前端js層面的rsa加密和後端php層面的rsa解密,快速上...

php web專案開發規範思考(1)

1.分層結構,邏輯,資料,控制,獨立服務層 不受業務 限制,只負責輸入和輸出 2,嚴格區分邏輯層,資料層,控制層。邏輯層,專注於業務邏輯。資料層,負責對邏輯層輸入的資料,進行增刪改查。控制器,只負責接收客戶端資料,呼叫服務層,輸入結果。是人寫,人是經常犯錯的,嚴格管控各個流程才能避免錯誤。關於測試 ...

hybird 開發中的快取問題

通過伺服器http載入的資源,方便伺服器push的方案,快取由瀏覽器和伺服器共同決定。放在資源包中的檔案,通過file協議的相對路徑或者絕對路徑載入,應該是永久快取只要不更新包,資源就不會更新。通過storage 快取資料,通過onstorage更新dom 通過sqlite儲存少量持久快取資源,不要...