为了账号安全,请及时绑定邮箱和手机立即绑定

Web 站点的缓存问题

标签:
Html/CSS

现在很多站点和项目开始使用前后端分离的架构,通常我们前端的产物为 HTML、JS和CSS,这些文件我们会部署到 WebService 或者 CDN,当然常用的 WebService 有 Nginx、IIS、Tomcat,这些 Web 容器通常会对静态文件做一些缓存设置,导致我们发布的站点用户看不到最新的更新。说说这种静态资源的站点的缓存问题如何解决。

Last Modify 浏览器端缓存

通常我们会对服务器设置这种缓存,当文件的最后修改事件发生改变后,通知浏览器清除原文件的缓存用新的文件。当然这种缓存有时候不好使。

HTML 的缓存问题(Expires)

HTML 是整个站点的结构和模版,通常我们希望它修改后浏览器端就随之更新,但是有一些运营商会对这些静态文件做一些不必要的优化,让 HTML 文件缓存起来,于是我们经常会对 HTML 的 Expires 设置为 0,这样让它始终获取最新的 HTML。

HTML 引用内部 JS、CSS 的缓存

通过自动化工具清除缓存,每次构建的时候对这些文件进行 MD5,然后通过 MD5 的值给文件重命名(同时修改所有对这个文件的引用),这样一来如果文件修改后,他的文件名也会随之修改,缓存自然不存在了。

DNS 缓存问题

这个问题通常是弹性负载均衡导致的,WebService 在请求后端接口时通过 HTTP 去访问一个 URL 地址(访问地址的过程中会对预警进行 DNS 解析),WebService 通常会对请求进行优化,DNS 解析的 IP 会缓存起来下次请求同样的域名就不需要浪费解析的时间了;但是弹性的负载均衡域名后面的 IP 经常会改变,会导致被缓存的 IP 无法访问 。如果是 Nginx WebService 可以这样设置:http://tenzer.dk/nginx-with-dynamic-upstreams/





点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
12
获赞与收藏
135

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消