前端 - 关于浏览器缓存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. html - css导航栏模糊,导航栏固定,随着页面滑动对下方页面产生模糊效果,如何实现?2. 老师们js,链接数据库mysql,一直报错,要怎么解决也!3. java - 输出4个不相等整数之间所有任意三个整数的乘积4. 前端 - 这段代码一直生效不了,查半天因为 top: 0px; 分号后一个隐藏的东西,也不是占位符...删了就可以生效,这是什么情况。。5. css - 这些字体是怎么弄的?6. css3 - 如图的flex骰子布局是怎么实现的?7. css3 怎么实现像书籍装订线的效果?8. python - 请问django的orm能否独立拿出来使用?例如在非web程序中使用9. javascript - 关于ajax异步的问题10. javascript - vue中自定义事件如何传递参数?

网公网安备