关于浏览器缓存控制的一个疑问

rockman
  • 168

今天看别人技术博客的时候看到这样一段话:

聪明的开发者会把Last-Modified 和ETags请求的http报头一起使用,这样可利用客户端(例如浏览器)的缓存。因为服 务器首先产生 Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服 务器验证其(客户端)缓存。

然后我就在想,我们自己开发的时候页面中是可设定Last-Modified的,这个值一般设置为当前时间点,那我们每一次去请求页面的时候,这个时间点不是在变动的吗?这样下来岂不是每次都是重新加载了,要怎么样写才能实现上面那位博主所说的在服务器端对这两项的值是否变动进行判断呢?关于浏览器缓存这块,偶尔是有看些http相关的资料,然后就了解自己可以设置cache-control,其余一般的工作就交给浏览器自己了,它好像会在一些情况下返回304(not changed)状态码,这个应该就是调用的缓存吧,但其实有点不知其所以然,还请各位帮忙释疑,谢谢!

回复
阅读 3.5k
3 个回答

这个值一般设置为当前时间点,那我们每一次去请求页面的时候,这个时间点不是在变动的吗?这样下来岂不是每次都是重新加载了

Last-Modified 为什么要设置成当前时间呢?

Last-Modified 意思是最后修改时间,看你的业务逻辑和缓存时间,决定你设置为什么值。

这个值通常是存放在数据库里面,当页面内容修改以后,则更新这个值。

希望题主先了解一下Last-Modified是啥意思在说吧。

如果不明白,可以看看 @lidashuang 推荐的两篇文章

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏