web開發中(zhōng)的緩存問(wèn)題的研究(一) - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

您當前位置>首頁 » 新聞資(zī)訊 » 網站(zhàn)建設 >

web開發中(zhōng)的緩存問(wèn)題的研究(一)

發表時間:2006-5-14

發布人:葵宇科技

浏覽次數:29

web開發中(zhōng)的緩存問(wèn)題的研究(一)
web開發中(zhōng)的緩存問(wèn)題的研究(二)
web開發中(zhōng)的緩存問(wèn)題的研究(三)

一般情況下(xià),浏覽器(qì)都會緩存已經訪問(wèn)過的頁面内容,關(guān)于如(rú)何禁止浏覽器(qì)緩存的介紹,在網上到處都有相關(guān)的文(wén)章,但是,關(guān)于浏覽器(qì)如(rú)何利用緩存,如(rú)何處理緩存的講解,卻鮮有人談及.我一直為這個(gè)問(wèn)題所困惑,這個(gè)問(wèn)題也是絕大多數有經驗的WEB開發人員所共同面臨的問(wèn)題,我有些朋友已做過幾十個(gè)大大小小的WEB項目,當與他們交流這些問(wèn)題時,他們雖然也在項目中(zhōng)遇到和(hé)解決過這些問(wèn)題,但由于沒有足夠的時間和(hé)精力來仔細思考這些問(wèn)題的原因和(hé)細節,他們對這些問(wèn)題始終也是一知半解、含糊不清,而目前又很少(shǎo)關(guān)于這些問(wèn)題的專門和(hé)詳細講解,我最近用了兩天的時間,把浏覽器(qì)緩存的問(wèn)題透徹地研究了一翻,主要包括一下(xià)方面的細節.

1.如(rú)何禁止浏覽器(qì)緩存,這是最簡單的問(wèn)題,本來羞于在此講解,但是為了完整性,不妨将其列為一個(gè)知識點.

2.浏覽器(qì)在訪問(wèn)已緩存過的資(zī)源時,它在什麼情況下(xià)會向服務器(qì)發送請求?在什麼情況下(xià)根本就不向服務器(qì)發送請求.這與浏覽器(qì)的緩存設置有關(guān)!但是,由于幾乎所有人的浏覽器(qì)都是采用的默認設置,所以,重點應該放在分析浏覽器(qì)的默認緩存設置的研究上.

3.當通(tōng)過其他網頁文(wén)檔中(zhōng)的超鍊接來訪問(wèn)某一個(gè)已經緩存過的資(zī)源時,浏覽器(qì)是否要向服務器(qì)發出訪問(wèn)請求?如(rú)果不發,則會出現一個(gè)問(wèn)題:當銷售一件商(shāng)品後再回到商(shāng)品庫存的顯示頁面時,看到的還将是先前看到的内容,而不是更新的庫存數據。但是,在訪問(wèn)一個(gè)普通(tōng)的HTML文(wén)件時,如(rú)果浏覽器(qì)每次都向服務器(qì)發送訪問(wèn)請求,效率就會相對低下(xià),這就失去了緩存的意義和(hé)價值.所以,結論應是浏覽器(qì)訪問(wèn)動(dòng)态頁面時不能使用緩存,而訪問(wèn)靜态頁面時應該使用緩存,但是,僅僅根據被訪問(wèn)頁面的資(zī)源名稱,浏覽器(qì)是無法知道商(shāng)品庫存的顯示頁面是屬于動(dòng)态内容,還是屬于靜态内容。浏覽器(qì)是根據什麼方式來判斷它緩存的資(zī)源是動(dòng)态的,還是靜态的呢(ne)?在什麼請求下(xià),它會對緩存的資(zī)源總是發出新的請求呢(ne)?

4.對于緩存的内容,即使浏覽器(qì)向服務器(qì)發送了請求,但服務器(qì)在接收到請求後,可(kě)能不會返回内容,而是讓浏覽器(qì)繼續使用緩存的内容,這在實際應用中(zhōng)有什麼好處呢(ne)?如(rú)何處理其具體細節呢(ne)?

5.服務器(qì)端也有緩存,當服務器(qì)接收到浏覽器(qì)的請求後,假設它返回響應内容,但返回的響應内容可(kě)能不是最新的内容,而很可(kě)能是一個(gè)舊的緩存版本,這又是怎麼回事呢(ne)?

所有這些問(wèn)題,在筆者的《深入體驗java web開發内幕》一書中(zhōng)都有深刻的分析和(hé)詳細的實驗步驟.

以下(xià)是該書的節選(不包括服務器(qì)端緩存技術(shù)的講解,服務器(qì)端緩存技術(shù)在其他章節有案例分析)

4.5.8 浏覽器(qì)緩存内幕與getLastModified方法
在HttpServlet類中(zhōng)定義了一個(gè)getLastModified方法,其完整語法定義如(rú)下(xià):
protected long getLastModified(HttpServletRequest req)
其中(zhōng)的返回值表示自1970年1月(yuè)1日的0點0分0秒開始計算的一個(gè)毫秒數,HttpServlet類中(zhōng)定義的getLastModified方法總是返回一個(gè)負數,在HttpServlet子(zǐ)類中(zhōng)可(kě)以對這個(gè)方法進行覆蓋,以便返回一個(gè)代表當前輸出的響應内容的修改時間,HttpServlet類的service方法可(kě)以根據這個(gè)返回值在響應消息中(zhōng)自動(dòng)生成Last-Modified頭字段。
一般情況下(xià),浏覽器(qì)都會緩存已經訪問(wèn)過的頁面内容,getLastModified方法的返回值可(kě)以影響浏覽器(qì)如(rú)何處理和(hé)利用緩存内容。在詳細了解getLastModified方法的應用之前,應該先對浏覽器(qì)的緩存機制有所了解。單擊IE浏覽器(qì)的“工具”?“Internet選項”菜單,打開“Internet選項”對話框,接着再單擊“常規”選項卡中(zhōng)的“Internet臨時文(wén)件”欄中(zhōng)的“設置”按鈕,打開如(rú)圖4.16所示的“設置”對話框。

圖4.16

在圖4.16所示的“設置”對話框的“Internet臨時文(wén)件夾”欄中(zhōng),可(kě)以看到浏覽器(qì)保存所有緩存頁面内容的文(wén)件夾的完整目錄名稱,對于Administrator用戶來說,其默認的設置為“C:/Documents and Settings/Administrator/Local Settings/Temporary Internet Files”。單擊“Internet臨時文(wén)件夾”欄中(zhōng)的“查看文(wén)件”按鈕,可(kě)以打開這個(gè)文(wén)件夾,如(rú)圖4.17所示。.

4.17

web開發中(zhōng)的緩存問(wèn)題的研究(一)
web開發中(zhōng)的緩存問(wèn)題的研究(二)
web開發中(zhōng)的緩存問(wèn)題的研究(三)

相關(guān)案例查看更多