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

歡迎訪問 生活随笔!

生活随笔

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

php

PHP在浏览器中被拒绝请求,php控制请求页面浏览器缓

發布時間:2023/12/1 php 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP在浏览器中被拒绝请求,php控制请求页面浏览器缓 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緩存的主要作用是防止用戶頻繁刷新網站頁面,導致服務器數據庫負擔,既要保證信息更新的及時性,也要保證緩存能被充分利用。http協議里控制瀏覽器緩存的頭有三個Cache-Control,Expires,Last-Modified,在PHP下控制請求頁面的瀏覽器緩存主要是利用php的

header()函數進行設置的。下面來了解一下這三個http協議里面控制緩存頭的含義以及如何使用php設置這三種頭標的方式吧!

(1)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消息的值,那么客戶機可以接收超出超時期指定值之內的響應消息。

注意:Cache-Control

頭標是在HTTP1.1里添加的,相對于其他幾種方式能夠實現更細致的緩存控制。

php設置 Cache_Control 頭標示例代碼如下:

1

header('Cache-Control: max-age=3600*24');//緩存1天,表示最大生存期是1天,超過1天瀏覽器必須去服務器重新讀取,這個時間是從用戶第一次讀取頁面時開始計時的

(2)Expires:緩存過期的絕對時間(格林威治標準時間)。如果過了它指定的那個時間點,瀏覽器就不認緩存了,就會去服務器重新請求一份最新的。

php設置 Expires 頭標示例代碼如下:

1

header('Expires: Mon, 29 Jan 2007 08:56:01

GMT');//指定過期時間,注意這里使用的是格林威治標準時間

獲取格林威治標準時間可使用函數gmdate,具體用法可參考相關文檔。

(3)Last-Modified:文檔的最后修改時間。它的用法就是:

1:如果是靜態文件,客戶端會發上來它緩存里的時間,apache會來比對,如果發現沒有修改就直接返回一個頭,狀態碼是304,字節數非常少。

2:如果是php動態文件,客戶端發上比對時間,php會判斷是否修改,如果修改時間相同,就

只會返回1024字節,至于為什么返回1024不得而知,如果你的php生成的文件非常大,它也只返回1024,所以比較省帶寬,客戶端會根據服務器端發

過來的修改時間自動從緩存文件里顯示。

注意:如果沒有設置Last-Modified頭,只設置了Cache-Control和Expires也是可以起作用的,但每次請求要返回真實的文件字節數,而不是1024

php設置 Last-Modified

頭標示例代碼如下:

1

header('Last-Modified: '.gmdate('D, d M Y

01:01:01',$time).' GMT');//使用的是格林尼治時間,$time是指文件添加時候的時間戳

下面發一個完整的通過php控制請求頁面瀏覽器緩存的示例:

1

2

echo

'這是一個緩存測試!';

3

$time=time();

4

$interval=3600*12;//12小時

5

header('Last-Modified: '.gmdate('r',$time));

6

header('Expires: '.gmdate('r',($time+$interval)));

7

header('Cache-Control: max-age='.$interval);

另外分析一下刷新,轉到以及強制刷新的區別,瀏覽器上有刷新和轉到按鍵,有的瀏覽器支持用ctrl+F5強制刷新頁面,它們的區別是什么?恐怕知道的人不多吧!其實這三種動作完全可以用上面這三種頭標進行解釋。

轉到:用戶點擊鏈接就是轉到,它完全使用緩存機制,如果有Last-Modified那么不會和服務器通訊,用抓包工具可以查看到發送字節是0byte,如果緩存過期,那么它會執行F5刷新的動作。

刷新(F5):這種刷新也是根據緩存是否有Last-Modified來決定,如果有會轉入304或1024(php),如果沒有最后更新時間那么去服務器讀取,返回真實文檔大小。

強制刷新(ctrl+F5):完全拋棄緩存機制,去服務器讀取最新文檔,向服務器發送的header如:Cache-Control:

no-cache 指令。

總結

以上是生活随笔為你收集整理的PHP在浏览器中被拒绝请求,php控制请求页面浏览器缓的全部內容,希望文章能夠幫你解決所遇到的問題。

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