小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

JR 精品文章 - web開發(fā)中的緩存問題的研究(一)

 Long_way 2007-08-24
web開發(fā)中的緩存問題的研究(一)
wty_703 轉(zhuǎn)貼   更新:2007-08-09 08:01:49  版本: 1.0   

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

1.如何禁止瀏覽器緩存,這是最簡(jiǎn)單的問題,本來(lái)羞于在此講解,但是為了完整性,不妨將其列為一個(gè)知識(shí)點(diǎn).

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

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

4.對(duì)于緩存的內(nèi)容,即使瀏覽器向服務(wù)器發(fā)送了請(qǐng)求,但服務(wù)器在接收到請(qǐng)求后,可能不會(huì)返回內(nèi)容,而是讓瀏覽器繼續(xù)使用緩存的內(nèi)容,這在實(shí)際應(yīng)用中有什么好處呢?如何處理其具體細(xì)節(jié)呢?

5.服務(wù)器端也有緩存,當(dāng)服務(wù)器接收到瀏覽器的請(qǐng)求后,假設(shè)它返回響應(yīng)內(nèi)容,但返回的響應(yīng)內(nèi)容可能不是最新的內(nèi)容,而很可能是一個(gè)舊的緩存版本,這又是怎么回事呢?

所有這些問題,在筆者的《深入體驗(yàn)java web開發(fā)內(nèi)幕》一書中都有深刻的分析和詳細(xì)的實(shí)驗(yàn)步驟.

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

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




圖4.16

  在圖4.16所示的“設(shè)置”對(duì)話框的“Internet臨時(shí)文件夾”欄中,可以看到瀏覽器保存所有緩存頁(yè)面內(nèi)容的文件夾的完整目錄名稱,對(duì)于Administrator用戶來(lái)說(shuō),其默認(rèn)的設(shè)置為“C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files”。單擊“Internet臨時(shí)文件夾”欄中的“查看文件”按鈕,可以打開這個(gè)文件夾,如圖4.17所示。.


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多