在负载均衡器后面有多个调度程序缓存响应头的正确设置是什么?
我想用调度程序发送ETag或Last-Modified标头,但调度程序实例之间没有同步,因此同一页面的修改日期在调度程序的缓存中会有所不同。
对此有什么正确的解决方案?
也许“FileETag Size”会在所有调度程序实例上产生相同的ETag,但我希望有更好的解决方案。
谢谢!
答案 0 :(得分:1)
如果您查看geometrixx示例应用程序上的图像,您将看到该纪元在CQ5的组件实例路径末尾以后缀形式写入。即/content/geometrixx/mypage/_jcr_content/mycomponent/myimg.img.jpg/1397355982.jpg
您可以以类似的方式制作组件,因此,您不必依赖标题本身。
如果使用边缘缓存解决方案(如F5),通常不使用修改的纪元,而是使用图像字节数据的MD5。这样,只有当内容本身发生变化时,才会指示客户端获取新图像。
FileETag Size也不是100%,因为您希望文件的字节数不同。它有效地使用有损的Web图像算法等,因为文件大小会随着文件的编辑而变化。
唯一要记住的是边缘缓存解决方案在重新生成etags时的速度。我们发现带有网络加速器的F5在这方面做得很好。这种技术允许您永久缓存,大大减少服务器上的负载,特别是如果您没有无限管道,并且在较长时间内被击中的页面前面重复出现图像。
在检测到移动设备时,还可以考虑使用HTML5客户端缓存技术的一些更聪明的解决方案,因为缓存永远在桌面上比在此阶段的移动设备上运行得更好,因为缓存在手机上要小得多。
希望有所帮助。