日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 浏览器缓存

發布時間:2023/12/14 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 浏览器缓存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

如何協商

當瀏覽器向web服務器請求內容時,服務器需要告訴瀏覽器那些內容可以被緩存,一旦瀏覽器知道某個內容可以緩存后,下次當瀏覽器需要請求這個內容時,它便不會直接向服務器請求完整內容,而是詢問服務器是否可以使用本地的緩存,服務器在收到瀏覽器的詢問后需要作出過段的回應,是允許瀏覽器使用本地緩存還是將最新內容傳回瀏覽器.
一個test.php

<?php echo time(); ;?>

如用ie瀏覽器訪問這個頁面時,返回狀態碼200,連續多次刷新這個頁面,這個頁面并沒有使用本地緩存,也沒有向服務器作出任何表示.打開ie的和這個臨時文件目錄發發現,該緩存文件的"上次修改時間"為無,瀏覽器并不知道這個文件的生成時間或上次修改時間,沒有過期檢查的依據,自然無法使用緩存.

last-modified

當在動態程序添加了last-modified后,瀏覽器請求了該地址,再次刷新該地址會發現請求參數中攜帶了一個if-modified-since.這意味著瀏覽器在詢問服務器:“我請求的內容在這個if-modified-since對應的時間之后是否有過更新”,我們需要檢查動態內容是否有更新,這部分需要動態程序自己來決定.

<?php $modified_timie=$_SERVER['HTTP_IF_MODIFIED_SINCE']; if(strtotime($modified_time)+3600>time()){ header("HTTP/1.1 304"); exit(1); }; ?>
另一種協商方法是ETag

它與前面所講的協商方式非常類似,但它沒有采用內容的最后修改時間,而是采用了一串編碼來標記內容,稱為ETag.一個原則是,如果一個內容的ETag沒有變化,那么這個內容也一定沒有更新.
這里不講這個,之后看情況是否補充.

瀏覽器緩存截止期

Expires告訴瀏覽器該內容在何時過期,暗示瀏覽器在該內容過期之前不需要詢問服務器,而直接使用本地緩存即可.
對應靜態內容,web服務器默認情況下不會開啟Expires標記的支持,需要自己去修改配置.

請求頁面

ctrl+f5 它使得網頁及其所有組件直接向web服務器發送請求,并且不使用緩存協商.

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

單擊瀏覽器地址欄的轉到按鈕或通過超鏈接 在瀏覽器輸入url后回車等同于這種操作.這幾種方式允許瀏覽器以最少的請求來獲取網頁的數據,瀏覽器對所有沒有過期的內容直接使用本地緩存.

適用于本地的過期時間

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 浏览器缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。