在负载平衡器后面有多个调度程序的缓存响应头的正确设置是什么?
我想用dispatcher发送ETag或Last,但是dispatcher实例之间没有同步,所以同一页面的修改日期在dispatcher的缓存中会有所不同。
什么是正确的解决办法?
也许"FileETag大小“会在所有dispatcher实例上导致相同的ETag,但我希望有一个更好的解决方案。
谢谢!
发布于 2014-04-13 02:43:56
如果您查看geometrixx示例应用程序上的图像,您将看到CQ5在组件实例路径的末尾以后缀的形式写入了这个时代。即/content/geometrixx/mypage/_jcr_content/mycomponent/myimg.img.jpg/1397355982.jpg
您可以以类似的方式制作组件,因此不必依赖标头本身。
如果使用边缘缓存解决方案(如F5 ),则通常不使用修改的时代,而是图像字节数据的MD5。这样,只有当内容本身发生变化时,才会指示客户端获取新图像。
FileETag大小也不会是100%,因为您预期文件的字节数会有所不同。对于有损的web图像算法等,它确实工作得比较好,因为文件的大小会随文件的编辑而变化。
唯一要记住的是,您的边缘缓存解决方案在重新生成etags时的速度有多快。我们已经发现,F5与网络加速器在这方面做得很好。这种技术允许您永远缓存,大大减少服务器上的负载,特别是当您没有无限的管道和在页面的前端重复图像时,这些图像会在较长的一段时间内被击中。
还值得研究一些更聪明的解决方案,在检测到移动设备时利用HTML5客户端缓存技术,因为缓存在桌面上永远比在移动设备上工作要好得多,因为移动设备上的缓存要小得多。
希望这能帮点忙。
https://stackoverflow.com/questions/23030994
复制相似问题