php 瀏覽器快取

2021-09-16 21:35:08 字數 1401 閱讀 4634

瀏覽器快取動態內容,快取的內容在瀏覽器本地,而內容由web伺服器生成,任何一方都不可能完成這一系列過程,他們之間有一種溝通機制,這就是快取協商.

如何協商

<?php echo time(); ;?>

如用ie瀏覽器訪問這個頁面時,返回狀態碼200,連續多次重新整理這個頁面,這個頁面並沒有使用本地快取,也沒有向伺服器作出任何表示.開啟ie的和這個臨時檔案目錄發發現,該快取檔案的"上次修改時間"為無,瀏覽器並不知道這個檔案的生成時間或上次修改時間,沒有過期檢查的依據,自然無法使用快取.

last-modified

當在動態程式新增了last-modified後,瀏覽器請求了該位址,再次重新整理該位址會發現請求引數中攜帶了乙個if-modified-since.這意味著瀏覽器在詢問伺服器:「我請求的內容在這個if-modified-since對應的時間之後是否有過更新」,我們需要檢查動態內容是否有更新,這部分需要動態程式自己來決定.

另一種協商方法是etag

它與前面所講的協商方式非常類似,但它沒有採用內容的最後修改時間,而是採用了一串編碼來標記內容,稱為etag.乙個原則是,如果乙個內容的etag沒有變化,那麼這個內容也一定沒有更新.

這裡不講這個,之後看情況是否補充.

瀏覽器快取截止期

expires告訴瀏覽器該內容在何時過期,暗示瀏覽器在該內容過期之前不需要詢問伺服器,而直接使用本地快取即可.

對應靜態內容,web伺服器預設情況下不會開啟expires標記的支援,需要自己去修改配置.

請求頁面

ctrl+f5 它使得網頁及其所有元件直接向web伺服器傳送請求,並且不使用快取協商.

f5 它等同於單機瀏覽器的重新整理按鈕,它允許瀏覽器在請求中附加表的快取協商,但不允許瀏覽器直接使用本地快取,就是說,它能夠讓last_modified發揮效果,對expires無效.

適用於本地的過期時間

header(「cache-control: max-age=3600」);

當http響應頭同時含有expires和cache-control時,瀏覽器會優先考慮cache-control.

其他在位址列回車

值為private或must-revalidate則只有第一次訪問時會訪問伺服器,以後就不再訪問。

值為no-cache,那麼每次都會訪問。

值為max-age,則在過期之前不會重複訪問

按後退按扭

值為private、must-revalidate、max-age,則不會重訪問,

值為no-cache,則每次都重複訪問

其他裡的主要還是區分瀏覽器,不同瀏覽器作用不一樣.

歡迎糾正

php 瀏覽器 快取,深入PHP與瀏覽器快取的分析

我們往往在伺服器上對快取設定進行各種優化方案,但是我們卻很少注意到客戶端快取,準確的說是瀏覽器的快取機制。其實每種瀏覽器都有快取策略,會暫時將每乙個瀏覽過的檔案快取在乙個特殊的資料夾裡。我們就可以在使用者重複提交頁面請求的時候,告訴使用者這個頁 面沒有改變,可以呼叫快取。那我們怎麼知道使用者有沒有這...

PHP 調整瀏覽器快取

用 php 控制瀏覽器快取是非常容易的,手冊上也相關的說明,由於很多初學者沒有把手冊看完,所以還是會有很多關於這個問題的疑問,故在此專門發一篇文章,同時對相關的語法做了詳細的說明,方便新手查閱。要解決這一問題,可以通過 php 中的 header 函式,傳送特定的快取控制原始 http 標頭,具體 ...

PHP與瀏覽器快取

我們往往在伺服器上對快取設定進行各種優化方案,但是我們卻很少注意到客戶端快取,準確的說是瀏覽器的快取機制。其實每種瀏覽器都有快取策略,會暫時將每乙個瀏覽過的檔案快取在乙個特殊的資料夾裡。我們就可以在使用者重複提交頁面請求的時候,告訴使用者這個頁 面沒有改變,可以呼叫快取。那我們怎麼知道使用者有沒有這...