0

Varnish 3.0.2、Apache2、Pressflowを実行しています。ESIを初めて起動して機能させようとしていますが、機能しますが、親ページが初めて要求されたときのみです。その後、親ページと置き換えられたコンテンツをキャッシュからプルします。私が考えることができる唯一のことは、インクルードされたファイルをまったくキャッシュしないように指示しているにもかかわらず、インクルードされたコンテンツが永続的にキャッシュされているということです。これが、保存されているインクルードされたファイルのオブジェクトです...

11 ObjProtocol  c HTTP/1.1
11 ObjResponse  c OK
11 ObjHeader    c Date: Wed, 18 Jul 2012 23:25:56 GMT
11 ObjHeader    c X-Powered-By: PHP/5.3.3-1ubuntu9.10
11 ObjHeader    c Last-Modified: Wed, 18 Jul 2012 23:25:56 +0000
11 ObjHeader    c Expires: Sun, 11 Mar 1984 12:00:00 GMT
11 ObjHeader    c Vary: Cookie,Accept-Encoding
11 ObjHeader    c ETag: "1342653956"
11 ObjHeader    c Content-Encoding: gzip
11 ObjHeader    c Content-Length: 656
11 ObjHeader    c Content-Type: text/html
11 ObjHeader    c Server: Apache/2.2.11
11 ObjHeader    c Cache-Control: no-store

私はこれに丸一日を費やし、検索し、見つけたすべての記事を読み、VCLとHTTPヘッダーの両方で構成の調整のヒープ全体を試しました。間違っていることが何も見えません。

これは私のVCLからのスニペットであり、キャッシュに保存しないように強制しようとしています

sub vcl_fetch {
  set beresp.do_esi = true;
  if (req.url ~ "^/esi_") {
    set beresp.http.Cache-Control = "no-store";
    set beresp.ttl = 0s;
  }
}

varnishlogにエラーを示すものは何も表示されていないことを付け加えておきます。include srcでパスとホスト+パスだけを使用してみましたが、違いはありません。バックエンドに新鮮なコンテンツを要求することはありません。2回目以降のリクエストのログを見ると、それがESIページであることに気付かないでしょう。

4

1 に答える 1

0

サブ vcl_recv {} に、varnish にキャッシュ内のリクエストを検索しないように指示する何かを提供し、バックエンド サーバーからの追加の http レスポンス要素を定義します。これは、vcl の条件によって処理されます。例: "pragma: no-cache" ..

~ "^/esi_" .. を使用して vcl_recv でこの条件を拡張できます。

sub vcl_recv(
  # ...
  # the rest goes here ..
  # ...
  if ((req.url ~ "^/esi_") && (req.http.pragma ~ "no-cache")) {
    return (pass);
  }
 # ...
}
于 2012-07-30T12:30:07.663 に答える