为什么有的时候服务器上的资源更新了,浏览器却不更新?
程序员文章站
2022-05-27 12:25:10
...
我记得之前有一段时间百度贴吧上的用户的头像修改了之后是不会立即更新的,我记得我当时用的好像是IE。
我想不更新可能有以下两个原因:
浏览器不检测资源是否更新,直接调用缓存。
特定的服务器为了节省资源不响应检测资源是否更新的请求。
我想知道的是这两种情况可不可能存在。以及还有没有其他的因素会导致服务器上的资源更新之后客户端浏览器不会更新资源。
我想不更新可能有以下两个原因:
浏览器不检测资源是否更新,直接调用缓存。
特定的服务器为了节省资源不响应检测资源是否更新的请求。
我想知道的是这两种情况可不可能存在。以及还有没有其他的因素会导致服务器上的资源更新之后客户端浏览器不会更新资源。
回复讨论(解决方案)
浏览器不检测资源是否更新,直接调用缓存。
这是浏览器的缓存功能,可设置。
但一般不建议开发者设置,这样才能最大程度的保证用户体验
适当的时候应发送禁用缓存的头,来使浏览器立即展现即时信息
特定的服务器为了节省资源不响应检测资源是否更新的请求。
没有这样的服务器,但有这样的服务器端程序。
你不是也喜欢使用一些带有缓存功能的模板引擎或框架吗?
还有一种情况是某些文件放在缓存服务器上,只会定时更新
想实时更新的可以发送禁用浏览器缓存的头信息(用于页面本身)
或发送一个随机码写成http://host/sample.css?xxxxxxxxxxxxxx的形式(用于页面内的其他非页面控件)
想缓存减少服务器负担可以发送浏览器缓存头
或者304头信息(无body数据,用于二次请求),这个多在服务器级响应完成,较少在程序内使用