![通过 HAProxy 规范化 Accept-Encoding,以优化 Squid 命中率](https://linux22.com/image/510413/%E9%80%9A%E8%BF%87%20HAProxy%20%E8%A7%84%E8%8C%83%E5%8C%96%20Accept-Encoding%EF%BC%8C%E4%BB%A5%E4%BC%98%E5%8C%96%20Squid%20%E5%91%BD%E4%B8%AD%E7%8E%87.png)
我们的网站基础设施使用 HAProxy 进行负载平衡,使用 Squid 集群进行缓存,应用程序数据位于 IIS 集群上。
我们通过 URI 对 HAProxy 进行负载平衡,以优化 Squid 命中率,但我们知道 Squid 根据浏览器传递给它的 Accept-Encoding 标头保存每个页面的不同副本,因此 IE(gzip、deflate)将具有与 Firefox(gzip、deflate)或 Chrome(gzip、deflate、sdch)不同的缓存页面副本。
我们想要规范化 Accept-Encoding 标头,我认为最好的地方是 HAProxy。如果有人能提供一些想法,说明如何在不破坏对不支持 gzip 或 deflate 的客户端的支持的情况下实现这一点,我将不胜感激。
答案1
好吧,也许您只是想用“gzip,deflate”替换“gzip,deflate,anything”?
你可以这样做:
reqirep ^Accept-Encoding:\ gzip,[\ ]*deflate,.* Accept-Encoding:\ gzip,\ deflate
此外,如果您使用的是大型 squid 农场,您可能会对 haproxy 1.4 的一致性哈希感兴趣。它可避免在您添加或删除服务器时重新平衡所有人,从而使服务器转换更加顺畅。