技术背景:
浏览器会保持一个本地缓存,如果这个缓存没有设置超时时间,那么浏览器在请求这个内容时会使用一个额外的头:if-modified-since.如果服务器发现被请求的对象发生了改变,则服务器发送一个刷新的内容给浏览器,否则浏览器使用本地缓存。
大量使用浏览器这一自身特性会加大服务器负担。
IBR的功用:
可以减少或消除对服务器静态内容的请求。
IBR使用前提:
1.相关请求连接不能使用variation rule
2.相关请求连接不能使用proxy rule
IBR使用范围:
只对如下HTML标签起作用
img
script
link
form中input类型是image的,既“提交”等按钮是图片的。
IBR行为:
1.让浏览器对指定的内容(被PV标签的)使用一个很长的缓存时间,180天。这个值只是影响浏览器,并不影响WA自己对缓存的处理时间(lifetime中设置的)。
2.在相关的HTML标签里插入PV标签,这个PV标签是相关缓存对象的一个HASH,用来唯一识别WA上缓存的内容
浏览器执行一个有附带条件的请求(if-modified-since)
如果请求到的HTML代码内容中相关PV标签相同,则直接从本地缓存读取
如果请求到的HTML代码内容中相关PV标签有变化,则浏览器重新获取相关内容(被PV标签的图片等)
启用IBR后,WA对浏览器的影响:
WA或略浏览器对被PV标签的内容设置的最小缓存时间。但是,对整个HTMl代码页面则遵循浏览器原始设置。即WA只影响img script link 等这些内容
总结:
一般来说启用了IBR后,都要在lifetime里设置忽略request和response中的no-cache设置!这样缓存的决定权就在WA上了。
IBR与东西是否缓存在WA上没有直接关系,它只是执行检查和插入。如果对一个HTML不缓存到WA上(应该不是指全代理而是指WA缓存时间0???),同样IBR是可以生效的。PV标签的那些图片等内容也不一定
在WA有缓存。
问题:
设置了IBR后,再在lifetime里设置的客户端缓存时间还有效吗??
文章评论