我需要设置一个可以为返回的内容设置自定义缓存键的 http 代理。squid2.7 似乎可以使用 storeurl_rewrite_program 特性来做到这一点,但是这个特性还没有移植到 squid3。有没有其他方法可以做到这一点,无论是使用 squid 还是其他一些 http 代理软件?如果该软件还可以与外部服务器合作,对缓存对象进行访问控制,这是一个好处,但并不是立即需要的。
用例是我想缓存经常使用的数据,以便从其他缓慢的存储中快速访问。该存储通过 http 访问到前端,该前端始终返回 302(临时移动)重定向到实际保存数据的冗余磁盘服务器之一。我要缓存的数据文件是公共的、静态的,通常大小为几 GB,因此非常适合缓存。但是,重定向 url 将包含身份验证令牌,因此始终是唯一的,有效地否定了缓存。另一方面,从重定向 url 重建原始 url 是微不足道的,所以如果代理服务器可以做到这一点并将其用于缓存键,那么缓存就会恢复正常运行。
将 storeurl_rewrite_program 功能导入 squid3 在这里被标记为重要:
http://wiki.squid-cache.org/RoadMap/Squid3
但它是否会成为 squid3.3 甚至 squid3.4 还存在很大的不确定性,而 squid2.7 计划随着 squid3.2 的发布而被淘汰。
关于访问控制,squid 似乎应该能够使用 external_acl_type 功能来做到这一点,但是在这个阶段提供对受保护数据的缓存访问并不是非常重要,所以现在我认为这只是顶部的糖。