本文章來(lái)介紹一下關(guān)于php 緩存一些基本常識(shí),有需要的朋友可參考一上.
我們可以在HTML頁(yè)面利用meta tag和PHP程序中通過header來(lái)控制.例如:
實(shí)例代碼如下:
- <?php
- header('Cache-Control:max-age=86400, must-revalidate');//24小時(shí)
- header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT');
- header('Expires:'.gmdate('D, d M Y H:i:s', time() + '86400').'GMT');
- echo '我不刷新';再寫個(gè)HTML文件c.htm:<html>
- <body>
- haha,<a href=cache.php>go</a>
- </body>
- </html>
我們請(qǐng)求127.1/c.htm,點(diǎn)擊鏈接,然后利用瀏覽器的回退按鈕,返回c.htm,再點(diǎn)擊鏈接,如下圖左所示,我們發(fā)現(xiàn),當(dāng)添加了緩存指令后,我們無(wú)論如何來(lái)回后退和點(diǎn)擊鏈接,下面的網(wǎng)絡(luò)請(qǐng)求URL這一條始終為灰色,表示瀏覽器并沒有發(fā)起實(shí)際的網(wǎng)絡(luò)請(qǐng)求,而是直接調(diào)用了存儲(chǔ)在用戶電腦中的緩存頁(yè),除非緩存時(shí)間過期,在這期間,即使是實(shí)際內(nèi)容改變了,瀏覽器也不會(huì)去重新讀取我們?cè)诜?wù)器上的資源.你可以把echo的那一句修改后,再點(diǎn)擊,會(huì)發(fā)現(xiàn)網(wǎng)絡(luò)請(qǐng)求仍然為灰色.在這種情況下,只有以下三種情況瀏覽器才會(huì)去更新緩存:
(1)緩存到期
(2)緩存被清除;
(3)F5或 ctrl+F5強(qiáng)制刷新.(這一點(diǎn)各種瀏覽器處理可能存在差異,我的測(cè)試環(huán)境是firefox 4)
當(dāng)我們屏蔽上面的header指令或者改用如下代碼時(shí)//告訴客戶端瀏覽器不使用緩存,HTTP 1.1 協(xié)議
實(shí)例代碼如下:
- header("Cache-Control: no-cache, must-revalidate");
- //告訴客戶端瀏覽器不使用緩存,兼容HTTP 1.0 協(xié)議
實(shí)例代碼如下:
- header("Pragma: no-cache");


瀏覽器就會(huì)在每次請(qǐng)求時(shí)都去服務(wù)器上讀取資源.如下面右邊的圖所示. 在這里,我們可以大致了解下瀏覽器對(duì)頁(yè)面的緩存處理.很容易,我們就能聯(lián)想出其使用場(chǎng)景,有時(shí)候我們需要它緩存,有時(shí)候又不需要,你可以根據(jù)場(chǎng)景來(lái)使用.不過,瀏覽器的緩存作用是很微小的,但能省一點(diǎn)算一點(diǎn).有時(shí)候,瀏覽器的緩存是很厲害的,需要我們強(qiáng)制刷新才能見效,比如JS文件,有時(shí)你更改了,即使刷新也是不會(huì)更改的.另,除了可以在代碼中設(shè)置頁(yè)面緩存,也可以在APACHE等服務(wù)器上配置,特別是靜態(tài)資源,加上緩存可以有效減少不必要的請(qǐng)求.
又有時(shí),我們通常會(huì)看到<script src="link.js?d=1923454332"></script>這樣的代碼,在JS文件后加上問號(hào)的那一串并沒有實(shí)際意義,只是為了避免JS被緩存,給JS文件加一個(gè)版本號(hào),通常用時(shí)間戳做標(biāo)記.這樣瀏覽器就不會(huì)緩存我們的JS文件了.
既然前端頁(yè)面緩存的目的是為了減少請(qǐng)求,那我馬上想到了另一個(gè)思路,那就是壓縮數(shù)據(jù).通過使用一些工具,可以對(duì)CSS和JS代碼進(jìn)行壓縮.比如jquery的使用版就是經(jīng)過壓縮的,往往這個(gè)壓縮比例還很大.通常使用jsmin,jspacker進(jìn)行壓縮,具體工具可以到網(wǎng)上搜索下.
新聞熱點(diǎn)
疑難解答