php 瀏覽器緩衝

來源:互聯網
上載者:User

瀏覽器緩衝,就完全不是那麼回事了,緩衝內容儲存在瀏覽器本地,而內容卻由web伺服器產生,任何一方都不可能獨立完成這一系統過程,所以它們之間必須有一種溝通機制,這就是http中的“緩衝協商”。
我們先來看一個通常的http請求:
host         www.111cn.net
user-agent         mozilla/5.0 (windows; u; windows nt 6.1; zh-cn; rv:1.9.2.9) gecko/20100824 firefox/3.6.9        firephp教程/0.4
accept         text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language         zh-cn,zh;q=0.5
accept-encoding         gzip,deflate
accept-charset         gb2312,utf-8;q=0.7,*;q=0.7
keep-alive         115
connection         keep-alive
上面就是一個普通的http請求,為了實現在瀏覽器緩衝控制,我們需要瞭解http回應標頭中的四種標記:
last-modified:最後修改gmt時間
etag:通過一串編碼來標記內容是否更改過
expires:指定一個到期gmt時間
cache-control:mag-age=相對於瀏覽器本地的到期秒數(可避免伺服器時間不正確的情況下同樣起作用)

http返回的狀態碼:
200——請求成功
304——用戶端已經執行了get,但檔案未變化
400——錯誤請求,如語法錯誤
500——伺服器產生內部錯誤
501——伺服器不支援要求的函數

以下代碼使用了以上四種方法來控制瀏覽器內容緩衝一個小時,如果在一小時之內則立即返回304狀態代碼通知瀏覽器使用本地的內容。這將節省伺服器程式執行時間,網路傳輸時間(僅返回一個標頭檔)
$modified_time = $_server['http_if_modified_since'];
if (strtotime($modified_time) + 3600 > time()) {
header("http/1.1 304");
exit(0);
}
header("last-modified:" . gmdate("d, d m y h:i:s") . "gmt");
header("expires:" . gmdate("d, d m y h:i:s", time() + 3600) . "gmt");
header("cache-control: max-age=3600");

特別需要說明一下的是:expires需要伺服器商支援expires模組預設情況下是不會開啟,使用以下命令即可:
a2enmod expires         //啟用expires模組
/etc/init.d/apache2 restart        //重啟apache服務
我們還可以通過修改http.conf配置中:
expiresactive        on expiresbytype image/gif “access plus 1 month” expiresbytype text/css教程 “now plus 2 day” expiresdefault         “now plus 1 day”
以上是針對靜態內容的mime類型來設定到期時間,因為我們無法給靜態檔案直接指定一個絕對到期時間,所以採用”access plus”式的文法,由web伺服器在該內容被請求的時候動態計算一個絕對到期時間,作為expires標記的內容。
值得一提的是,對於常見的靜態檔案格式,即便是web伺服器返回http回應標頭中沒有expires標記,瀏覽器也會根據一些其它線索猜測一個到期時間,比如ie在某種緩衝模式下,對於gif圖片設定為永不到期,除非我們配置expires為馬上到期,也就是將到期時間設定為目前時間或者0。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.