您好,登錄后才能下訂單哦!
php header()中的cache有四種標(biāo)識頭:Last-Modified,Expires,Pragma: no-cache,Cache-Control。
以下的測試環(huán)境為谷歌瀏覽器,其余的未測試
Last-Modified:在判斷緩存的時(shí)候,If-Modified-Since會將此值發(fā)送給服務(wù)器。
Expires:后面的日期用于標(biāo)識緩存在什么時(shí)候過期
Pragma:盡量用Cache-Control替代
Cache-Control:可以有如下的值:
public:可以在任何地方緩存,包括瀏覽器、代理等
private:只能被瀏覽器緩存,共享緩存不可被緩存
no-cache:不緩存
no-store:
no-transform:
must-revalidate:緩存必須檢查更新版本
proxy-revalidate:代理緩存必須檢查更新版本
max-age:內(nèi)容能夠被緩存的時(shí)期,以秒表示
s-maxage:覆蓋共享緩存的max-age設(shè)置
下面看看Last-Modified
1.php
<?php $cache_expire_date = gmdate("D, d M Y H:i:s", time() + 300); header("Last-Modified:$cache_expire_date"); ?> <a href="2.php" title="">this is page 1</a> <div> page 1 number:111 </div>
2.php
<?php ?> <a href="1.php" title="">this is page2</a> <div> page 2 number: </div>
當(dāng)點(diǎn)擊鏈接或者刷新1.php的時(shí)候,會發(fā)現(xiàn)其RequestHeaders中多了一行If-Modified-Since字段。但是,單獨(dú)的Last-Modified不會有任何的緩存作用。
下面來看看Expires:
將1.php修改
<?php $cache_expire_date = gmdate("D, d M Y H:i:s", time() + 300); header("Expires: $cache_expire_date"); ?> <a href="2.php" title="">this is page 1</a> <div> page 1 number:111 </div>
第一次請求1.php的時(shí)候,和普通的無差別
在2.php中跳轉(zhuǎn)回1.php,發(fā)現(xiàn)Network--Size中顯示的是from cache,而且點(diǎn)擊文件,其Headers一欄也沒有RequestHeaders等信息。它直接從緩存中獲取。此時(shí)即使將div中的數(shù)字修改,在300秒以內(nèi),通過2.php鏈接跳轉(zhuǎn)回來,依然顯示的是未修改前的頁面。
但是刷新頁面以后,請求和普通的也無差別。
接下來看看Cache-control
將1.php修改為
<?php header('Cache-control:private,'); ?> <a href="2.php" title="">this is page 1</a> <div> page 1 number:111 </div>
對于沒有設(shè)置時(shí)間的Cache-control,和普通的無差別
接下來繼續(xù)修改
<?php header('Cache-control:private, max-age=300'); ?> <a href="2.php" title="">this is page 1</a> <div> page 1 number:111 </div>
這個(gè)和通過Expires設(shè)置的差不多。
當(dāng)頁面為
<?php header('Cache-control: max-age=300'); ?> <a href="2.php" title="">this is page 1</a> <div> page 1 number:111 </div>
即使不設(shè)置private參數(shù),也會緩存
當(dāng)參數(shù)為no-cache的時(shí)候,均會重新請求
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。