2012-01-05 4 views
0

ワニススクリプトはvclにとってかなり堅牢なようですが、私はそれが必要なものにする方法をまだ理解できません。私は同じコードベースからさまざまなサイトを走らせています。ほとんどのディレクトリで統一されたワニスキャッシュが必要です。非常に特別なことを行うためのワニススクリプトの作成方法

x.mysite.org/theme/something.gifとy.mysite.org/tome/something.gif x.mysite.org/file.php/1とy.mysite.org/file.php/1はに基づいて個別のキャッシュを持っている必要がありますしかし

ワニスキャッシュ

に同じGIFの2つのコピーを保存しませんurl。

また、mysite.orgは、独自のキャッシュを持つまったく別のサイトです。私は、必要に応じてキャッシュなしならば要求はフォールスルーすることができますので、実際のapacheのサイトを務めbase.mysite.org行うことができます

sub vcl_fetch { 
    if (req.url ~ ".*\.org/file\.php") { 
    # do normal site specific caching 
    } elseif (req.url ~ "^+?\.mysite.org") { 
    # cache all found material in a base directory so everyone knows where to look 
    set req.url = regsub(req.url, "(.*\.org)(.*)", "base.mysite.org\2"); 
    } else { 
    # do normal site specific caching for base site 
    } 
} 

sub vcl_recv { 
    # do I need to do something here to look in base.mysite.org 
} 

を次のように

私の現在の方向です。

私は書き込みパス上に、私は助けてください。

答えて

1

あなたは、キャッシュオブジェクトのハッシュを取得するには、ホスト名+ URLを使用するデフォルトワニスでは、そう

sub vcl_fetch { 
    # if it starts with /theme or /static, or contains .gif,.png etc, 
    # then consider the host to the normalized/common host 
    if (req.url ~ "^/(theme|static)" || req.url ~ "\.(gif|png)") { 
    set req.http.host = "base.mysite.org"; 
    return (lookup); 
    } 
    # else, do non shared stuff here 
} 
0

req.http.host代わりにreq.url正常化すべきです。つまり、x.mysite.org/theme/something.gifとy.mysite.org/theme/something.gifが全く同じコンテンツを指していても、ワニスには2つの異なるキャッシュオブジェクトとして表示されます。同じキャッシュオブジェクトを指すようにする唯一の方法は、アイビーが彼の記事で説明したようにホスト名を正規化することです。

'希望に役立ちます。

関連する問題