對於靜態頁面還有Etag。
一、先來看第一種情況:apache 靜態頁面
apache發送給客戶端的靜態頁麵一般包含Last-Modified和Etag,這兩個標籤的值來自靜態檔案的修改時間和inode。
下面是截取得apache返回客戶端的頭
XML/HTML代碼
複製代碼 代碼如下:
Last-Modified: Fri, 26 Jan 2007 01:53:34 GMT
ETag: "3f9f640-318-cb9f8380"
搜尋引擎之所以喜歡靜態檔案是因為有這兩個標識,可以判斷檔案是否更新過
二、PHP等動態頁面
由於php是動態產生的,它的內容是不能根據php程式的時間來決定最後修改日期,所以預設php回傳客戶端的時候補包含任何快取控制,要利用好快取就必須了解快取機制,和理減少b,s的交互,縮減頻寬流量,減輕伺服器負擔...好處多多。
三、快取控制的具體意義
先解釋一下本人經過測試理解的這幾個標籤的含義
Cache-Control:指定請求和回應遵循的快取機制。在要求訊息或回應訊息中設定Cache-Control並不會修改另一個訊息處理過程中的快取處理過程。請求時的快取指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,回應訊息中的指令包括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訊息的值,那麼客戶機可以接收超出超時期指定值之內的回應訊息。
php用法:
在輸出之前用header(),(如果使用ob_start()可以將header放在程式任意地方)
PHP程式碼
複製程式碼 程式碼如下:
header('Cache-Control: max-age=8');
max-age=8表示最大生存期8秒,超過8秒瀏覽器必須去伺服器重新讀取,這個時間是以使用者的讀取頁面開始計時的,而Expires是絕對時間。
Expires:快取過期的絕對時間,如果過了它指定的那個時間點,瀏覽器就不認快取了,要去伺服器重新請求一份最新的。
Last-Modified:文件的最後修改時間,它的妙用就是:1
如果是靜態文件,客戶端會發上來它緩存裡的時間,apache會來比對,如果發現沒有修改就直接回傳一個頭,狀態碼是304,位元組數非常少,(進階版本還會增加比較Etag來決定檔案是否改變)
2 php動態檔:
客戶端發上比對時間,php會判斷是否修改,如果修改時間相同,就只會返回1024字節,至於為什麼返回1024不得而知,如果你的php生成的文件非常大,它也只返回1024,所以比較省頻寬,客戶端會根據伺服器端發過來的修改時間會自動從快取檔案顯示。
註:如果沒有Last-Modified頭,Cache-Control和Expires也是可以運作的,但每次要求要傳回真實的檔案位元組數,而不是1024
四、HOW ?
靜態頁面不用去管它了,如果想更好的控制靜態頁面的緩存,apache有幾個模組可以很好的控制,這裡不討論
php頁面:
這裡分兩種:
1 、不常改動的頁面,類似新聞發布,這類頁面的特色:第一次發布之後會有幾次改動,隨著時間推移基本上不會再修改。控制策略應該是:1第一次發布之發送Last-Modified,max-age設定1天,修改過之後更新Last-Modified,max-age時間隨著修改次數正常。這樣似乎比較繁瑣,還要記錄修改次數,也可以預期下次可能的修改時間用Expires指定到大概時間過期
PHP代碼
複製程式碼 程式碼如下:
//header('Cache-Control: max-age=86400');//快取一天
header('Expires: Mon, 29 Jan 2007 08 :56:01 GMT');//指定過期時間
header('Last-Modified: '.gmdate('D, d M Y 01:01:01',$time).'GMT');//格林尼治時間,$time是文件添加時候的時間戳記
2 經常改動的頁面
類似bbs,論壇程序,這種頁面更新速度比較快,緩存的主要作用是防止用戶頻繁刷新列表,導致服務器數據庫負擔,既要保證更新的及時性,也要確保快取能被利用
這裡一般用Cache-Control來控制,依照論壇的發文的頻率靈活控制max-age。
PHP程式碼
複製程式碼 程式碼如下:
header('Cache-Control: max-age=60' );//快取一分鐘
header('Last-Modified: '.gmdate('D, d M Y 01:01:01',$time).'GMT');//格林尼治時間,$time是貼文的最後更新時間戳
五額外
1 刷新,轉到,強制刷新的區別
瀏覽器上有刷新和轉到按鍵,有的瀏覽器支援用ctrl +F5強制刷新頁面,它們的差異是什麼?
轉到:用戶點擊連結就是轉到,它完全使用快取機制,如果有Last-Modified那麼不會和伺服器通訊,用抓包工具可以查看到發送字節是0byte,如果緩存過期,那麼它會執行F5刷新的動作。
刷新(F5):這種刷新也是根據快取是否有Last-Modified來決定,如果有會轉入304或1024(php),如果沒有最後更新時間那麼去伺服器讀取,返回真實文檔大小
強制刷新:完全拋棄快取機制,去伺服器讀取最新文檔,傳送給伺服器的header如下
XML/HTML程式碼
複製程式碼程式碼如下:
Cache-Control: no-cache
2 調試工具
查看瀏覽器和伺服器互動比較好的工具是httpwatch pro,現在的版本4.1,支援ie7
還有別的代理抓包工具可以分析,http debugging。沒用過,還有tcp抓包工具,2000自備的network。另外還有tcp抓包工具,2000自備的network monitor不過不是專門針對http的比較難用。
以上就介紹了apache struts2 Apache環境下PHP利用HTTP快取協定原理解析及應用分析,包含了apache struts2方面的內容,希望對PHP教學有興趣的朋友有幫助。

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具