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

首頁 > 網站 > 建站經驗 > 正文

在瀏覽器地址欄按回車、F5、Ctrl+F5刷新網頁的區別

2024-04-25 20:17:09
字體:
來源:轉載
供稿:網友

Browser: F5 vs Ctrl+F5

在瀏覽器里中,按F5鍵或者點擊Toobar上的Refresh/Reload圖標(簡稱F5),和做F5同時按住Ctrl鍵(簡稱Ctrl+F5),效果是明顯不一樣的,通常Ctrl+F5明顯要讓網頁Refresh慢一些,到底兩者有什么區別呢?

在上一篇技術文章中,說到了Expires、Last-Modified/If-Modified-Since和ETag/If-None-Match這些HTTP Headers,F5/Ctrl+F5和這些有莫大關系。

假如我第一次訪問過http://m.survivalescaperooms.com,這個網頁是個動態網頁,每次訪問都會去訪問Server,但是它包含一個一個靜態資源http://m.survivalescaperooms.com/logo.gif,瀏覽器在顯示這個網頁之前需要發HTTP請求獲取這個logo.gif文件,返回的HTTP response包含這樣的Headers:

Expires: Thu 27 Nov 2008 07:00:00 GMT
Last-Modified: Fri 30 Nov 2007 00:00:00 GMT

那么瀏覽器就會cache住這個logo.gif文件,直到2008年11月27日7點整,或者直到用戶有意清空cache。

下次我再通過bookmark或者通過在URI輸入欄直接敲字的方法訪問http://m.survivalescaperooms.com的時候,瀏覽器一看本地有個logo.gif,而且它還沒過期呢,就不會發HTTP request給server,而是直接把本地cache中的logo.gif顯示了。

F5的作用和直接在URI輸入欄中輸入然后回車是不一樣的,F5會讓瀏覽器無論如何都發一個HTTP Request給Server,即使先前的Response中有Expires Header。所以,當我在當前http://m.survivalescaperooms.com網頁中按F5的時候,瀏覽器會發送一個HTTP Request給Server,但是包含這樣的Headers:

If-Modified-Since: Fri 30 Nov 2007 00:00:00 GMT

實際上Server沒有修改這個logo.gif文件,所以返回一個304 (Not Modified),這樣的Response很小,所以round-trip耗時不多,網頁很快就刷新了。

上面的例子中沒有考慮ETag,如同在上一篇技術文章中所說,最好就不要用ETag,但是如果Response中包含ETag,F5引發的Http Request中也是會包含If-None-Match的。

那么Ctrl+F5呢? Ctrl+F5要的是徹底的從Server拿一份新的資源過來,所以不光要發送HTTP request給Server,而且這個請求里面連If-Modified-Since/If-None-Match都沒有,這樣就逼著Server不能返回304,而是把整個資源原原本本地返回一份,這樣,Ctrl+F5引發的傳輸時間變長了,自然網頁Refresh的也慢一些。

實際上,為了保證拿到的是從Server上最新的,Ctrl+F5不只是去掉了If-Modified-Since/If-None-Match,還需要添加一些HTTP Headers。按照HTTP/1.1協議,Cache不光只是存在Browser終端,從Browser到Server之間的中間節點(比如Proxy)也可能扮演Cache的作用,為了防止獲得的只是這些中間節點的Cache,需要告訴他們,別用自己的Cache敷衍我,往Upstream的節點要一個最新的copy吧。

在IE6中,Ctrl+F5會添加一個Header

Pragma: no-cache


在Firefox 2.0中,Ctrl+F5會添加兩個
Pragma: no-cache
Cache-Control: max-age=0

作用就是讓中間的Cache對這個請求失效,這樣返回的絕對是新鮮的資源

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 塘沽区| 大邑县| 佳木斯市| 北流市| 北宁市| 保定市| 麟游县| 渭源县| 都兰县| 射阳县| 邢台县| 金昌市| 闵行区| 那坡县| 逊克县| 丰镇市| 天台县| 甘肃省| 仙游县| 交口县| 合作市| 安庆市| 郑州市| 邢台县| 台南市| 新沂市| 遵义市| 浠水县| 科技| 大洼县| 阿勒泰市| 洛扎县| 商丘市| 湄潭县| 溧水县| 茶陵县| 休宁县| 临邑县| 泸西县| 邯郸县| 宜丰县|