<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我思故我強

    使用瀏覽器Cache和http狀態碼304實現的客戶端緩存

    Cache就是瀏覽器的緩存技術,大家肯定不陌生,瀏覽器在每次加載一個文件的時候,都要去自己的緩存文件夾里面去查找是否存在可用緩存,如果存在,則不再去服務器下載而直接使用本地內容,這是一個很好的節省服務器性能和流量的方式,在網站不做任何設置的情況下,瀏覽器會根據用戶的設置來確定是否使用緩存,可見瀏覽器的“Internet選項”的“瀏覽歷史紀錄”的“設置”部分。

      通常來講,Cache設置有兩種方式:第一種是在HTML內容的head之中設置:

      <meta  http-equiv="Expires"  CONTENT="0">  //這一句設置文件的過期時間為0秒

      <meta  http-equiv="Cache-Control"  CONTENT="no-cache">  //這一句設置文件禁止被緩存

      第二種是通過HTTP Head來設置,例如在.NET(C#)之中:

      Response.Cache.SetExpires(time);//設置文件的過期時間為當前的時間。

      我個人比較喜歡通過HTTP HEAD這種方式來設置,因為我覺得這不屬于HTML本身的內容,當然,如果是靜態文件,就只能通過html head來設置了,在我的網站"地名信息系統"之中,我設置了每個HTML頁面在7天后失效,因為該HTML是自動生成的。

      在上面的Cache介紹之中,提到了瀏覽器在存在緩存的時候不去服務器取相關的內容,可是僅僅這樣設置,好像有時候這些瀏覽器還是去服務器請求,有些時候的請求很合理,例如用戶點擊“刷新”按鈕的時候,有些時候我也不知道為什么,因此,我在系統之中進一步使用了HTTP狀態碼。

      HTTP狀態碼有很多用戶不愿意去了解,其實這是很重要的內容,至于怎么個重要法,以及詳細的使用說明請大家去參考相關的文檔,我這里舉幾個例子:

      1.有的用戶在網站頁面不存在的時候顯示了自己定義的頁面,可是忘記使用404狀態碼,這樣瀏覽器就不知道它下載的內容究竟是正常內容還是頁面不存在的提示,可能用戶能從頁面內容上分辨出來,可是搜索引擎的機器人不會,因此就可能會被搜索引擎列入“無法檢索”的黑名單。

      2.在頁面轉向的時候不使用301或者302的狀態碼,造成搜索引擎不知道葉面已經被轉向。

      我專門要說的304是一個用處和Cache相同的東西,這個狀態碼的含義是“服務器端沒有更新”,也就是說客戶端的文件版本是最新的,他的用法是這樣的:

      1.當用戶首次請求該文件的時候,通過HTTP HEAD的Last-Modified字段將該文件的最后修改日期發送到客戶端,讓客戶端知道該文件的版本,例如:

      Last-Modified: Tue, 08 Apr 2008 14:48:05 GMT

      2.在瀏覽器再次請求該文件的時候,會自動將該時間作為請求的HTTP HEAD的If-Modified-Since字段內容(有時候根據瀏覽器的不同,可能會用逗號隔開附加上文件的字節數大小),例如:

      If-Modified-Since: Tue, 08 Apr 2008 14:48:05 GMT

      3.服務端根據If-Modified-Since字段的內容(如果存在該字段)來判斷客戶端的文件是否已經過期,如果已經過期,則重新返回新的文件,如果沒有,則只需要返回304狀態碼,就可結束輸出,這樣代表瀏覽器端的文件版本是最新的,不需要返回文件內容。

      要知道,服務器返回一個304的時間要比返回整個文件的時間要小得多,性能損耗和網絡占用也小得多。

      Cache和304技術有一定的重復,我選擇Cache和304技術一起使用是因為單用Cache好像瀏覽器有時候還是去取最新內容(尤其是用戶點擊刷新按鈕的時候),而單獨使用304則在瀏覽器向服務器詢問的過程還是會占用一定的性能和時間。這兩種技術結合起來使用是剛剛好的。

    posted on 2009-05-21 11:45 李云澤 閱讀(5116) 評論(1)  編輯  收藏 所屬分類: 軟件設計

    評論

    # re: 使用瀏覽器Cache和http狀態碼304實現的客戶端緩存 2013-11-01 15:09 趙成并

    您好。我實現了一個策略。服務器端返回304,但是由于客戶端用戶的操作頁面內容已經有所變化,客戶端設置了緩存。firefox下面刷新頁面就會看到一個空白頁面,沒有內容。可能cache已經被清空了。但是在chrome上面完全正常。 請問樓主,這可能是哪里處理問題??  回復  更多評論   

    主站蜘蛛池模板: 国产乱子伦精品免费无码专区| 秋霞人成在线观看免费视频 | jlzzjlzz亚洲jzjzjz| 亚洲AV无码片一区二区三区| 亚洲国产精品热久久| 亚洲人午夜射精精品日韩| 国产在线一区二区综合免费视频| 亚洲AV日韩AV无码污污网站| 亚洲国产精品白丝在线观看| 免费h成人黄漫画嘿咻破解版| a级毛片在线免费| 美女扒开尿口给男人爽免费视频 | 久操视频在线免费观看| 一级毛片aaaaaa视频免费看| 久久综合亚洲色HEZYO社区| 久久久久亚洲AV成人网| 免费在线观看a级毛片| 青青草国产免费久久久91| 野花香在线视频免费观看大全 | 女人与禽交视频免费看| 精品多毛少妇人妻AV免费久久| 亚洲国产人成在线观看| 亚洲天堂中文资源| 久久夜色精品国产嚕嚕亚洲av| AV大片在线无码永久免费| 久久精品国产亚洲av瑜伽| 亚洲人成77777在线播放网站不卡| 亚洲系列国产精品制服丝袜第| 亚洲免费视频在线观看| 久久精品国产精品亚洲精品| 妞干网免费观看视频| 最近免费中文字幕视频高清在线看 | 国产一区二区三区免费观看在线| 亚洲kkk4444在线观看| 亚洲国产日韩在线成人蜜芽| 国产亚洲sss在线播放| 一本色道久久综合亚洲精品蜜桃冫| 亚洲无吗在线视频| 亚洲欧美不卡高清在线| 亚洲国产精品久久网午夜| 亚洲人妖女同在线播放|