我們可以在HTML頁面利用meta tag和PHP程序中通過header來控制例如
代碼如下
header(CacheControl:maxage= mustrevalidate);//小時
header(LastModified:gmdate(D d M Y H:i:s)GMT);
header(Expires:gmdate(D d M Y H:i:s time() + )GMT);
echo 我不刷新;再寫個HTML文件chtm
hahago
我們請求/chtm點擊鏈接然後利用浏覽器的回退按鈕返回chtm再點擊鏈接如下圖左所示我們發現當添加了緩存指令後我們無論如何來回後退和點擊鏈接下面的網絡請求URL這一條始終為灰色表示浏覽器並沒有發起實際的網絡請求而是直接調用了存儲在用戶電腦中的緩存頁除非緩存時間過期在這期間即使是實際內容改變了浏覽器也不會去重新讀取我們在服務器上的資源你可以把echo的那一句修改後再點擊會發現網絡請求仍然為灰色在這種情況下只有以下三種情況浏覽器才會去更新緩存
()緩存到期
()緩存被清除;
()F或 ctrl+F強制刷新(這一點各種浏覽器處理可能存在差異我的測試環境是firefox )
當我們屏蔽上面的header指令或者改用如下代碼時//告訴客戶端浏覽器不使用緩存HTTP 協議
代碼如下
header("CacheControl: nocache mustrevalidate");
//告訴客戶端浏覽器不使用緩存兼容HTTP 協議
代碼如下
header("Pragma: nocache");
浏覽器就會在每次請求時都去服務器上讀取資源如下面右邊的圖所示 在這裡我們可以大致了解下浏覽器對頁面的緩存處理很容易我們就能聯想出其使用場景有時候我們需要它緩存有時候又不需要你可以根據場景來使用不過浏覽器的緩存作用是很微小的但能省一點算一點有時候浏覽器的緩存是很厲害的需要我們強制刷新才能見效比如JS文件有時你更改了即使刷新也是不會更改的另除了可以在代碼中設置頁面緩存也可以在APACHE等服務器上配置特別是靜態資源加上緩存可以有效減少不必要的請求
又有時我們通常會看到這樣的代碼在JS文件後加上問號的那一串並沒有實際意義只是為了避免JS被緩存給JS文件加一個版本號通常用時間戳做標記這樣浏覽器就不會緩存我們的JS文件了
既然前端頁面緩存的目的是為了減少請求那我馬上想到了另一個思路那就是壓縮數據通過使用一些工具可以對CSS和JS代碼進行壓縮比如jquery的使用版就是經過壓縮的往往這個壓縮比例還很大通常使用jsminjspacker進行壓縮具體工具可以到網上搜索下
From:http://tw.wingwit.com/Article/program/PHP/201311/20968.html