2015-10-13 35 views
0

我是VCL規則的新手。 我想從varnish緩存中緩存特殊頁面。如何從緩存中排除特殊頁面(Varnish)?

我究竟想要做的是排除被緩存包含特定查詢字符串「查詢=(1號和100之間)」的所有URL

此代碼僅適用於一個特定的查詢。

sub vcl_recv { 
    # don't cache these special pages 
    if (req.url ~ "query=100") { 
      return(pass); 
    } 
} 

我只是想確定這個規則應該適用於1-100的整個範圍,對不對?

sub vcl_recv { 
    # don't cache these special pages 
    if (req.url ~ "query=[0-9]") { 
      return(pass); 
    } 
} 

還是我必須這樣做?

sub vcl_recv { 
    # don't cache these special pages 
    if (req.url ~ "query=1||query=2||...||query=99||query=100") { 
      return(pass); 
    } 
} 

回答

0

我不知道,如果光油支持大括號,如果這樣做,你應該這樣做:

sub vcl_recv { 
    # don't cache these special pages 
    if (req.url ~ "query=([0-9]{1,2}|100)") { 
    return(pass); 
    } 
} 

順便說一句,這個正則表達式匹配「查詢= 990」。我不知道你的網址是如何組成的,但你應該添加一些東西來避免(如果你真的需要)。

例如,如果有其他PARAMS:

sub vcl_recv { 
    # don't cache these special pages 
    if (req.url ~ "query=([0-9]{1,2}|100)&") { 
    return(pass); 
    } 
} 

或者如果它在URL中的最後PARAM:

sub vcl_recv { 
    # don't cache these special pages 
    if (req.url ~ "query=([0-9]{1,2}|100)$") { 
    return(pass); 
    } 
} 
+0

光油是使用PCRE庫。 – Doomsday

+0

感謝您的信息。 Perl正則表達式支持大括號:) – Redithion

相關問題