學nginx的時候把瀏覽器的緩存機制琢磨了一下。把相關http header研究了一下。
然后突然想起一個問題,就是以前在本地開發(fā)的過程中修改js文件時由于瀏覽器緩存導致新的改動并沒有生效,必須清空才可以。
然后就想結合剛了解的http緩存機制來弄清楚以前那個js文件不生效的問題。
可是問題來了。為什么js文件在修改之后,刷新頁面,瀏覽器沒有從本地服務器獲取新的js文件而是從緩存中讀取。
我確認了request header 里的cache-control是 max-age=0,就是說向服務器確認該js文件是否需要更新。
那有改動的話應該是重新請求js文件 且status為200才對呃。。。。
還是說只要js文件的名字沒變。那么瀏覽器就認為緩存是存在的,可以直接讀?。??并不需要判斷etag或者last-modified
request header的cache-control: max-age=0
只有在CTRL + F5
強刷時才會加入
正常訪問并不會加這種頭
你要控制瀏覽器的行為,應該在服務端的cache-control
里配置
不能脫離服務端的cache-control
討論瀏覽器的緩存機制
request header是給服務器看的,不是給瀏覽器看的,你的理解本身就不對
服務端通過cache-control、etag、last-modified告訴瀏覽器和緩存服務器應該怎么存儲和處理這個URL
如果符合一定規(guī)則(具體看下方文章),瀏覽器并不會向服務器發(fā)出請求,而是直接使用本地緩存
如果符合一定規(guī)則需要向服務器發(fā)出請求,瀏覽器通過If-Modified-Since
If-None-Match
cache-control
告訴服務器應該響應304還是200
這篇文章已經講得很清楚了:
https://developers.google.com...
你自己一堆概念都沒有搞清楚。
可是問題來了。為什么js文件在修改之后,刷新頁面,瀏覽器沒有從本地服務器獲取新的js文件而是從緩存中讀取。
首先,瀏覽器不知道你的 js 文件到底有沒有改。瀏覽器如果沒有發(fā)出遠端請求,那么一定是“緩存頭”機制在發(fā)生作用。(前提是瀏覽器自己正確實現了 HTTP 協議的相關要求)
我確認了request header 里的cache-control是 max-age=0,就是說向服務器確認該js文件是否需要更新。
那有改動的話應該是重新請求js文件 且status為200才對呃。。。。
這是你服務器的事,不是瀏覽器這個客戶端的事。
還是說只要js文件的名字沒變。那么瀏覽器就認為緩存是存在的,可以直接讀?。??并不需要判斷etag或者last-modified
文件名沒有變,緩存策略受“頭”控制。
文件名變了,一定不會有緩存,因為瀏覽器標識資源是依賴 URI 的,文件名(準備說是是 URL 中的 path)是這個 URI 的一部分。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數據專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯網學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯想擔任系統開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統架構師,美國AngelEngineers Inc. 系統架構師。