国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

瀏覽器緩存可以加快站點的訪問速度?

2024-07-09 22:40:00
字體:
來源:轉載
供稿:網友
  當我們想盡辦法提高服務器負載能力的時候,是否曾想過,其實瀏覽器也有緩存功能,我們也可以利用瀏覽器的緩存功能來減少服務器的負載,提高網站吞吐量?
 
  當我們使用抓包工具查看http狀態時,我們可以看到200,304,fromcache之類的標識,也許你也早已注意到了他們,并明白他們的意思。但是,你是否想過在你的程序中加入代碼主動告訴瀏覽器,更好地利用瀏覽器緩存。
 
  備注:本章所有案例都是使用chrome17.0.963.79m瀏覽器,測試方式為每次打開瀏覽器新窗口的方式測試,而不是F5刷新。
 
  我們先做一個沒有緩存的頁面,叫做nocache.php
 
  代碼如下:
 
  <?php
 
  echotime();
 
  ?>
 
  用瀏覽器打開,我們可以看到每次打開頁面,都是打印新的時間,返回的狀態碼是200,表明在默認情況下,我們的瀏覽器沒有使用緩存。
 
  我們再做一個頁面,叫做last_modified.php
 
  代碼如下:
 
  <?php
 
  $cache_time=3600;
 
  $modified_time=@$_SERVER['HTTP_IF_MODIFIED_SINCE'];
 
  if(strtotime($modified_time)+$cache_time>time()){
 
  header("HTTP/1.1304");
 
  exit;
 
  }
 
  header("Last-Modified:".gmdate("D,dMYH:i:s",time())."GMT");
 
  echotime();
 
  ?>
 
  用瀏覽器打開,我們可以看到第一次打開,返回的狀態碼為200,打印時間為最新時間。然后我們第二次打開,可以看到狀態碼為304,時間和剛才的時間一樣,表明我們是使用到緩存了。我們刪除last_modified.php文件,然后第三次打開頁面,瀏覽器返回404錯誤,可見Last-Modified雖然使用了緩存,但是每次打開頁面依然需要向服務器發起http請求,瀏覽器根據用戶的$_SERVER['HTTP_IF_MODIFIED_SINCE']來判斷瀏覽器的內容是否過期,沒過期的話返回304狀態,瀏覽器內容從緩存中讀取。
 
  我們再做一個頁面,叫做expires.php
 
  代碼如下:
 
  <?php
 
  $cache_time=3600;
 
  header("Expires:".gmdate("D,dMYH:i:s",time()+$cache_time)."GMT");
 
  echotime();
 
  ?>
 
  用瀏覽器打開,我們可以看到第一打開,返回的狀態為200,時間為最新的時間。然后我們第二次打開,可以看到狀態碼依然是200,時間依然是舊的時間,Size欄目顯示為fromcache,表示內容是直接從瀏覽器讀取。我們刪除expires.php文件,然后第三次在新窗口中打開,可以看到返回200狀態碼,打印時間依然是舊的,Size依然提示為fromcache,由此可見,設置了Expires,就算刪除頁面,瀏覽器端依然可以顯示,表明瀏覽器根本就沒有向服務器發起http請求。
 
  到這里,也許你會感覺Expires比Last-Modified緩存效果更好是吧,因為本地有緩存數據時,不需要向服務器發起http請求,服務器的并發數會明顯的減少,可以少處理很多http請求。但是Expires也有缺點,那就是設置的過期時間是服務器的時間,而不是你本地的時間,這樣如果服務器時間跟你本地時間不一致時,可能并沒有起到緩存的效果。HTTP/1.1為了彌補Expirse的不足,引入了Cache-Control標記。格式如下Cache-Control:max-age=<second>,這個時間是相對瀏覽器本地時間,所以更加準確。
 
  我們再做一個頁面,叫做cached_control.php
 
  代碼如下:
 
  <?php
 
  $cache_time=3600;
 
  header("Cache-Control:max-age=".$cache_time);
 
  echotime();
 
  ?>
 
  我們測試可以得到設置Expires一樣的效果,也就是緩存后,刪除文件,依然在瀏覽器緩存有效期內可以正常訪問頁面。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会宁县| 专栏| 昭平县| 曲水县| 左贡县| 卓资县| 鹤峰县| 大兴区| 克拉玛依市| 郁南县| 永德县| 高雄县| 布尔津县| 九龙坡区| 衡东县| 灯塔市| 江川县| 兴国县| 莎车县| 武定县| 万州区| 永寿县| 永川市| 台北市| 霍州市| 嘉兴市| 镇原县| 永州市| 吉木萨尔县| 黑山县| 军事| 宁晋县| 台北县| 含山县| 辽阳市| 衡山县| 西安市| 财经| 德令哈市| 金华市| 宁安市|