前端 - 關于瀏覽器緩存html文件
問題描述
最近在學習瀏覽器的緩存機制,看到有一種方案,使用強緩存,資源名用文件名+md5來命名,實現資源的更新,對于這個方案有幾點疑問:
是否每次修改了資源,都要在html中修改link標簽,把url指向最新的資源。這樣不會很麻煩嗎?尤其是同一個資源被無數html引用的時候(所以會有類似的工具/腳本?)
瀏覽器也會緩存這個html文件,那么html文件自身如何更新呢?比如我用node寫個服務器,可能一句app.use(’/’, index);就好了,但是每次瀏覽器也會對html進行緩存,如果用到上述這種方案的話,是否應該在服務器這里做出改動,讓所有返回的html文件,都不使用強緩存,這樣每次就可以加載到最新修改的html了。(我也查看了幾家大網站的F12,有的html就是200,比如百度和網易,新浪這種還是返回的304)
可以講一講詳細的方案嗎。。查看很多資料都是一句“資源名+md5命名,每次加載最新的資源”,初學者在實現上有些看不懂。。。
問題解答
回答1:-> 1, 每次資源更新, HTML 是需要更新的, 這通過代碼來完成, 比如 HTML 頁面是個模板引擎, md5 文件后綴通過 Webpack 生成, 渲染一下就好.
-> 2, 看具體策略吧. 如果是靜態文件, 一般通過 HTTP 協議檢查文件的更新時間或者 etag, 不更新返回 304, 更新返回 200. HTML 文件放在服務器, 跟靜態資源放在 CDN 生成 200(from cache) 區分開. 如果頁面是需要針對每個請求渲染生成, 那一般就是 200 了.
-> 3, 整個過程麻煩地很, 根據業務和工具鏈還會有變化, 太復雜, 一般人沒心情講. 推薦去把國外的博客看, 比如 https://medium.com/@okonetchn...
相關文章:
1. javascript - 回調函數和閉包的關系2. javascript - 在top.jsp點擊退出按鈕后,right.jsp進行頁面跳轉,跳轉到login.jsp3. android - 哪位大神知道java后臺的api接口的對象傳到前端后輸入日期報錯,是什么情況?求大神指點4. mac連接阿里云docker集群,已經卡了2天了,求問?5. javascript - 下面的這段算法代碼求解釋6. css3 - 在sublime text里, 如何讓emmet生成的帶前綴css屬性垂直對齊?7. javascript - js 有什么優雅的辦法實現在同時打開的兩個標簽頁間相互通信?8. java - spring-data Jpa 不需要執行save 語句,Set字段就可以自動執行保存的方法?求解9. [前端求職必看]前端開發面試題與答案精選_擴展問題10. 想找個php大神仿個網站。
