2013-05-29 5 views
9

私の人生の間、ワニスが500の内部サーバーエラーのキャッシュを無視する方法を知ることはできません。基本的には、誰かがワニスに当たって500の内部サーバーエラーが返された場合、ワニスにそのページをキャッシュしないようにします(0秒間の猶予期間を設定しますか?)。私はワニス3.0.3を使っています。ここに私のVCLがあります。デフォルトでは、30日間ページをキャッシュします。ワニスの内部サーバーエラーをキャッシュしない方法

sub vcl_fetch { 
    # Set 30-day TTL 
    set beresp.ttl = 2592000 s; 
    set beresp.grace = 15d; /* The max amount of time to keep object in cache */ 

    if (beresp.status == 301 || beresp.status == 302) { 
      return (hit_for_pass); 
    } 

    # Serve pages from the cache should we get a sudden error and re-check in one minute 
    if (beresp.status >= 500) { 
     set beresp.grace = 1s; 
     set beresp.ttl = 1s; 
     return (hit_for_pass); 
    } 

    # Unset the "etag" header (suggested) 
    unset beresp.http.etag; 

    return(deliver); 
} 

したがって、英語では:500の内部サーバーが返された場合... X-CACHEにMISSが表示されます。ページをリフレッシュしても、まだ内部サーバーが500の場合は、MISSが再度表示されます。ページが正常に配信された場合は、HITが表示されます。デフォルトワニスにより

答えて

14

は、次のステータスコードをキャッシュする[1]:

  • 200:OK
  • 203:非信頼できる情報
  • 300:複数の選択肢
  • 301:永続的移動
  • 30:一時的に移動しました
  • 307:一時的なリダイレクト
  • 410:ページでは、まだMISS

    を取得します正常に配信されて初めてという

注[1] http://book.varnish-software.com/3.0/VCL_Basics.html#the-initial-value-of-beresp-ttl

+1

フムが見つかりません...私は:

  • 404ゴーンVarnishが404エラーをキャッシュする理由を理解していない。リソースはバックアップされていますが、ユーザーは表示されません。 – Leonid

  • +2

    @Leonid、404は一般的にリバースプロキシによってキャッシュされます。なぜなら、上流のサーバーが正しく機能していないことを示すものではなく、要求が正しく受信されて処理されましたが、要求されたリソースは存在しません。 – mickeybob