2011-12-13 40 views
3

我正在使用光油2.0.6,我很难找到好的文档来编写vcl_hash函数。光油vcl_hash删除参数

我需要在缓存之前从我的API的URL中删除一些参数。特别是传递给追踪分析但不改变结果的用户标识。

URL: /api/browse?node=123&userid=3432432564363 

我写了这一点,但如果vcl_hash功能需要与“哈希”或“回报(散)”或没有结束它不是楔子我,如果我需要处理所有的情况下,或者只是我的特殊情况。我不清楚我是覆盖方法还是扩展它。

我:

sub vcl_hash { 
    if (req.url ~ "^/api/browse") { 
    set req.hash += regsuball(req.url,"&userid=([A-z0-9]+)",""); 
    } 
    hash; 
} 

它是否失去了一些东西?

回答

0

我测试了几件事情,而这一次似乎工作:

sub vcl_hash { 
    if (req.url ~ "^/api/browse") { 
    set req.hash += regsuball(req.url,"&userid=([A-z0-9]+)",""); 
    } else { 
    set req.hash += req.url; 
    } 
    set req.hash += req.http.host; 
    hash; 
} 

所以看起来你也必须处理当你重写vcl_hash默认情况下。

+2

我仍然不明白为什么我必须使用“req.hash + =”就像我追加了一些现有的值。什么值? – robsf 2011-12-14 02:59:32