欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解瀏覽器的各種刷新規(guī)則

 更新時(shí)間:2016年10月08日 10:03:00   作者:蛋炒飯  
這篇文章給大家詳細(xì)介紹了PC瀏覽器的刷新方式,以及簡(jiǎn)單的介紹了WISE瀏覽器的刷新方式,文章介紹的很詳細(xì),有需要的朋友們可以一起來(lái)看看吧。

PC瀏覽器的刷新方式我們常用的有大概四種:

    1. url+enter或者a標(biāo)簽的超鏈接點(diǎn)擊

    2. F5刷新/ctrl+R刷新/按鈕刷新

    3. ctrl+F5刷新/ctrl+shift+R刷新

    4. 后退刷新

WISE瀏覽器的刷新方式則一般是三種:

    1. url+enter或者a標(biāo)簽的超鏈接點(diǎn)擊

    2. 按鈕刷新

    3. 后退刷新

他們各有不同,不同瀏覽器下的效果也不一樣,以一個(gè)帶iframe的測(cè)試頁(yè)面為例,我們測(cè)試的前提是允許頁(yè)面緩存,下邊我們一個(gè)一個(gè)講:

PC瀏覽器

1. url+enter或者a標(biāo)簽的超鏈接點(diǎn)擊

若是你曾訪問(wèn)過(guò)此網(wǎng)站,那么這種刷新方式是從緩存中直接提取數(shù)據(jù),請(qǐng)求并沒(méi)有到服務(wù)端,當(dāng)然前提是這個(gè)網(wǎng)站設(shè)置了有效緩存。


如上是chrome瀏覽器下的html頁(yè)面的請(qǐng)求,請(qǐng)求參數(shù)中帶上了If-None-Match(有些情況下可能還會(huì)有If-Modified-Since參數(shù)),服務(wù)器返回304,說(shuō)明這個(gè)請(qǐng)求訪問(wèn)了服務(wù)器,并進(jìn)行了緩存驗(yàn)證。

     If-Modified-Since:如果請(qǐng)求的部分在指定時(shí)間之后被修改則請(qǐng)求成功,未被修改則返回304代碼,對(duì)應(yīng)響應(yīng)頭 Last-Modified

    If-None-Match:如果內(nèi)容未改變返回304代碼,參數(shù)為服務(wù)器先前發(fā)送的Etag,與服務(wù)器回應(yīng)的Etag比較判斷是否改變,對(duì)應(yīng)響應(yīng)頭 Etag

再看下iframe的中的請(qǐng)求


首先說(shuō)明,iframe中src屬性中的請(qǐng)求本身不會(huì)干擾。

可以看到iframe中的請(qǐng)求也和外部請(qǐng)求一樣帶上了If-None-Match參數(shù)。

再看圖片資源的請(qǐng)求,我們事先給圖片設(shè)置了max-age=2628000:


可以看到圖片的請(qǐng)求頭這次沒(méi)有If-None-Match參數(shù),而是帶上了Cache-Control:max-age=0,狀態(tài)碼是200 from cache,說(shuō)明這次請(qǐng)求沒(méi)有訪問(wèn)服務(wù)器,而直接是cache返回的響應(yīng)。

事實(shí)證明:當(dāng)本地有緩存,但你沒(méi)有給它設(shè)置有效期或者已經(jīng)過(guò)期時(shí),回車這種刷新方法會(huì)主動(dòng)去訪問(wèn)服務(wù)器判斷緩存是否需要更新,而如果設(shè)置了有效期并且沒(méi)過(guò)期,則這種刷新方法會(huì)直接從cache中請(qǐng)求資源。

如上是火狐下的firebug,可以看到html頁(yè)面請(qǐng)求返回304,并且請(qǐng)求頭中帶上了If-None-Match參數(shù),這和chrome一樣。
而iframe中的請(qǐng)求也和chrome沒(méi)有區(qū)別,圖片由于直接從cache中加載,所以火狐直接不顯示了。

「總結(jié)」:url+enter或者a標(biāo)簽的超鏈接點(diǎn)擊這種刷新方法chrome和火狐表現(xiàn)一致,對(duì)于請(qǐng)求還在有效期內(nèi)的緩存資源會(huì)直接從緩存中返回,否則則會(huì)帶上If-None-Match/If-None-Match參數(shù)訪問(wèn)服務(wù)器判斷是否需要更新緩存。

2. F5刷新/ctrl+R刷新


首先看chrome,chrome下這次所有資源都表現(xiàn)一致,包括iframe中的請(qǐng)求以及之前提到的設(shè)置了max-age的圖片資源。

上圖是html文件的請(qǐng)求,

這次的請(qǐng)求頭多了cache-control: max-age=0,

服務(wù)器會(huì)根據(jù)Etag或者Last-Modified來(lái)判斷緩存是否需要更新,如果不需要更新,就會(huì)返回304告訴瀏覽器它的緩存還能用,并

給緩存續(xù)期,需要更新的話就返回最新的數(shù)據(jù)和新的Etag/Last-Modified,并且更新瀏覽器緩存。

然后看火狐,

對(duì)于html資源以及設(shè)置了max-age的圖片資源的請(qǐng)求,火狐和chrome的效果是一致的,但是iframe中 的資源請(qǐng)求則有些不同,相比較chrome,缺少了cache-control: max-age=0參數(shù)。

3. ctrl+F5刷新

這次火狐和chrome的所有請(qǐng)求都是一致的,所以只看chrome就行了。

這次刷新請(qǐng)求沒(méi)有方式2中的If-Modified-Since和If-None-Match參數(shù),cache-control的數(shù)值變成:no-cache,并且增加了Pragma: no-cache。

后兩個(gè)參數(shù)意義相同,只是兼容http版本不同。

no-cache使這次請(qǐng)求強(qiáng)制訪問(wèn)服務(wù)器,并進(jìn)行驗(yàn)證,但由于這次沒(méi)有If-Modified-Since和If-None-Match參數(shù),服務(wù)器無(wú)法驗(yàn)證,所以服務(wù)器直接返回了數(shù)據(jù)和新的Last-Modified以及Etag,狀態(tài)碼200OK

4.后退刷新

后退刷新主要指的是那些設(shè)置了頁(yè)面強(qiáng)行不緩存的網(wǎng)站,chrome在這里比較符合標(biāo)準(zhǔn),從一個(gè)當(dāng)前頁(yè)面跳轉(zhuǎn)到另一個(gè)頁(yè)面,再回退回來(lái)時(shí),頁(yè)面上的資源都是直接請(qǐng)求的緩存:

如上圖是chrome瀏覽器下做的測(cè)試。

在后退這一點(diǎn)上,火狐有不同的做法:

如上圖,會(huì)發(fā)現(xiàn)有個(gè)新的名詞:BFCache

全稱是back-forward cache,也就是“往返緩存”,為了提高用戶使用瀏覽器的“后退”和“前進(jìn)”按鈕時(shí)加快頁(yè)面的轉(zhuǎn)換速度。

這個(gè)緩存中不僅保存著頁(yè)面數(shù)據(jù),還保存了DOM和JavaScript的狀態(tài);實(shí)際上是將整個(gè)頁(yè)面都保存在了內(nèi)存里。也就是說(shuō)“后退”不光意味著html/js/css/接口等動(dòng)靜態(tài)資源不會(huì)重新請(qǐng)求,連JS也不會(huì)重新執(zhí)行。

圖中不全都是form BFCache,是因?yàn)槲以跍y(cè)試頁(yè)面中加入了一個(gè)iframe,事實(shí)證明iframe不會(huì)被火狐的"往返機(jī)制"所緩存,它依然遵循url+enter刷新中的請(qǐng)求方式。

這一點(diǎn)在MDN中也有明確指出:

如果頁(yè)面位于bfcache中,那么再次打開(kāi)該頁(yè)面就不會(huì)觸發(fā)load事件。

盡管由于內(nèi)存中保存了整個(gè)頁(yè)面的狀態(tài),不觸發(fā)load事件也不應(yīng)該會(huì)導(dǎo)致什么問(wèn)題,但為了更形象地說(shuō)明bfcache的行為,F(xiàn)irefox還是提供了一些新事件。

pageshow

第一個(gè)事件就是pageshow,這個(gè)事件在頁(yè)面顯示時(shí)觸發(fā),無(wú)論頁(yè)面是否來(lái)自bfcache。在重新加載頁(yè)面中,pageshow會(huì)在load事件觸發(fā)后觸發(fā);而對(duì)于bfcache中的頁(yè)面,pageshow會(huì)在頁(yè)面狀態(tài)完全恢復(fù)的那一刻觸發(fā)。另外要注意的是,雖然這個(gè)事件的目標(biāo)是document,但必須將其事件處理程序添加到window。

除了通常的屬性之外,pageshow事件的event對(duì)象還包含一個(gè)名為persisted的布爾值屬性。如果頁(yè)面中保存在了bfcache中,則這個(gè)屬性的值為true;否則,這個(gè)屬性的值為false。

你可以根據(jù)persisted來(lái)判斷是否是bfcache中的頁(yè)面觸發(fā)的pageshow事件。

pagehide

與pageshow事件對(duì)應(yīng)的是pagehide事件,該事件會(huì)在瀏覽器卸載頁(yè)面的時(shí)候觸發(fā),而且是在unload事件之前觸發(fā)。與pageshow事件一樣,pagehide在document上面觸發(fā),但其事件處理程序必須要添加到Windows對(duì)象。這個(gè)事件的event對(duì)象也包含persisted屬性

總結(jié)

好了,以上就是這篇文章的全部?jī)?nèi)容了,wise瀏覽器的詳細(xì)介紹我們會(huì)在之后更新,感興趣的請(qǐng)繼續(xù)關(guān)注腳本之家。

相關(guān)文章

  • Git基礎(chǔ)學(xué)習(xí)之分支操作的示例詳解

    Git基礎(chǔ)學(xué)習(xí)之分支操作的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Git基礎(chǔ)學(xué)習(xí)中分支的基本操作,文中的示例代碼講解詳細(xì),對(duì)我們了解Git有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • SpringSecurity框架簡(jiǎn)介及與shiro特點(diǎn)對(duì)比

    SpringSecurity框架簡(jiǎn)介及與shiro特點(diǎn)對(duì)比

    這篇文章是SpringSecurity框架的入門篇,主要為大家介紹了SpringSecurity框架簡(jiǎn)介及與shiro優(yōu)缺點(diǎn)對(duì)比有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • 一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問(wèn)題及解決辦法

    一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問(wèn)題及解決辦法

    這篇文章主要介紹了一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問(wèn)題及解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • IDEA2019.3在Plugins中搜索不到translation的解決

    IDEA2019.3在Plugins中搜索不到translation的解決

    這篇文章主要介紹了IDEA2019.3在Plugins中搜索不到translation的解決,文中通過(guò)圖文的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 分享最新Sublime Text4 Build 4107注冊(cè)碼(密鑰)漢化及完美永久破解方法

    分享最新Sublime Text4 Build 4107注冊(cè)碼(密鑰)漢化及完美永久破解方法

    分享一個(gè)適用最新Sublime Text4 Build 4107注冊(cè)碼(密鑰)及Sublime Text 4完美永久破解方法,需要的朋友可以參考下
    2021-05-05
  • 目標(biāo)檢測(cè)mAP的概念及公式詳解

    目標(biāo)檢測(cè)mAP的概念及公式詳解

    這篇文章主要為大家介紹了我們?cè)谶M(jìn)行目標(biāo)檢測(cè)時(shí)需要用到的mAP概念及公式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 使用git?config?--global設(shè)置用戶名和郵件問(wèn)題

    使用git?config?--global設(shè)置用戶名和郵件問(wèn)題

    這篇文章主要介紹了使用git?config?--global設(shè)置用戶名和郵件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • XML CDATA的作用

    XML CDATA的作用

    當(dāng)你用FLASH和xml結(jié)合做網(wǎng)站應(yīng)用程序時(shí),例如你做在我研究游戲排行榜中,當(dāng)讓人自由輸入姓名時(shí),人們可以輸入一些符號(hào),例如∶"<"、">"、"/"、"?"等,當(dāng)生成XML時(shí),會(huì)破壞了XML結(jié)構(gòu),使數(shù)據(jù)中斷。
    2009-09-09
  • 蝴蝶優(yōu)化算法及實(shí)現(xiàn)源碼

    蝴蝶優(yōu)化算法及實(shí)現(xiàn)源碼

    這篇文章主要為大家介紹了蝴蝶優(yōu)化算法的講解及實(shí)現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • 淺析HTTP3

    淺析HTTP3

    本文簡(jiǎn)單介紹了HTTP協(xié)議,以及介紹了HTTP的成長(zhǎng),不同HTTP解決的問(wèn)題等方面,詳細(xì)講解了HTTP3,感興趣的小伙伴一起來(lái)看看吧
    2021-08-08

最新評(píng)論