鱿鱼 StoreId 重写

Squid StoreId rewrite

我尝试配置我的代理来删除一些缓存文件的重复数据。 一些站点在 URL 末尾添加查询字符串,因此文件被多次缓存。例如:

我想像这样为 storeId 创建和重写规则:

^http:\/\/download\.oracle\.com\/otn\-pub\/java\/([a-zA-Z0-9\/\.\-\_]+\.(tar\.gz)) http://download.oracle.com/otn-pub/java/

但我还没有找到关于如何做到这一点的文档。

好的,经过长时间的研究,我找到了问题的答案。如果其他人有同样的问题,我写在这里。

首先,我安装了Squid 3.4,第一个版本支持StoreId重写。 二、阅读 StoreId 文档后:

  • wiki.squid-缓存.org/Features/StoreID
  • wiki.squid-缓存.org/Features/StoreID/DB

和很多 google 搜索我找到了这个 perl 程序 http://pastebin.ca/2422099。它以一个数据库文件作为第一个参数,你可以在第二个 link 之前找到例子。在文件中我有一行如上:

^http:\/\/download\.oracle\.com\/otn\-pub\/java\/([a-zA-Z0-9\/\.\-\_]+\.(tar\.gz))  http://download.oracle.com/otn-pub/java/

第三,在我的 squid.conf 中,我有这一行:

store_id_program /usr/local/squid/store-id.pl /usr/local/squid/store_id_db
store_id_children 5 startup=1

store_id_program 是 perl 文件的路径,参数是数据库文件。
store_id_children表示程序允许的子进程数,最多5个,开头1个。

在同一个 squid.conf 中,我替换了这一行:

refresh_pattern -i (/cgi-bin/|\?) 0       0%      0

来自

refresh_pattern -i cgi-bin        0       0%      0

允许使用查询字符串缓存 url。

最后,我确保 store-id.pl 有 'x' 权限

希望对您有所帮助:)

PS:只是一个技巧,在 db 文件中,您必须用制表符(而不是 space)分隔列。可以肯定的是,您可以使用此命令(在文档中找到):

cat dbfile | sed -r -e 's/\s+/\t/g' |sed '/^\#/d' >cleaned_db_file