3

Heroku & Rails - Varnish HTTP Cache Not Workingに似た問題がありますが、解決策 (しばらく待ってからすべてが機能する) が適用されないようです。以下の設定を数日間行いました。

Heroku Google グループのこのスレッドには、同じ問題を抱えているユーザーが何人かいます。彼らは、すべてがキャッシュされるまでに時間がかかると言っていますが、私の理解では、しばらくするとすべてがキャッシュされるはずですよね? それとも、大量のトラフィックがある場合にのみ適用されますか?

キャッシュを適切に機能させるために、どこを見ればよいか、何を変更できるかについてアドバイスが必要です。

私のセットアップ:

Heroku (Rails 3.0.3、Ruby 1.9.2、bamboo-mri-1.9.2) でhttp://www.swingoutlondon.co.ukを実行しています。メイン インデックス ページは多くのデータベース クエリを実行して、基本的に静的なページ - 通常は約 2 ~ 3 秒かかります (はい、これは私が実際に対処する必要があることですが、ワニスのキャッシュがすぐに役立つと思います)

hereCache-Controlで説明されているように応答ヘッダーを設定しましたが、実際にはページに設定されているようです:

>> curl -I http://swingoutlondon.co.uk

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 13 May 2012 00:01:05 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Cache-Control: public, max-age=300
Etag: "2565201f3ae39c6a9a1f6b1fb8bbbe0a"
X-Ua-Compatible: IE=Edge,chrome=1
X-Runtime: 1.699667
Content-Length: 44224
Accept-Ranges: bytes
X-Varnish: 681634826
Age: 0
Via: 1.1 varnish

ノート:Cache-Control: public, max-age=300

Age: 0これは、キャッシュされたコピーを取得していないことを示していると思います。実際、コマンドは通常の遅い 2 ~ 3 秒で返されます。

そのカールを繰り返し試行し続けると、キャッシュされたコピーがときどきできます (ページは 0.5 秒未満で読み込まれ、Age0 より大きくなります)。

HTTP ヘッダーを完全に理解していないことを告白しなければなりませんが、1 つの手がかりは次AgeX-Varnishとおりです。

X-Varnish: 848670407 848650521

ここに私がチェックしたものがあります:

  • のソースは毎回同じです。
  • そのページにbefore_filterは、ページが最後に更新された時刻をインスタンス変数として設定するものがあります。
  • 多数の Cookie があります。私が見る限り、それらはすべて Google Analytics または Twitter または Facebook ボタンのいずれかによって設定されます。

参考までに、ここに私の Request ヘッダーを示します。

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Cookie:__utma=264326157.189257391.1336869624.1336869624.1336869624.1; __utmb=264326157.2.10.1336869624; __utmc=264326157; __utmz=264326157.1336869624.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Host:www.swingoutlondon.co.uk
If-None-Match:"2565201f3ae39c6a9a1f6b1fb8bbbe0a"
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19
4

1 に答える 1

2

まあ、Heroku は複数の独立した Varnish サーバーを使用し、Swing Out London へのトラフィックは比較的少ないため、max-age が 5 分しかない場合、キャッシュによって多くのページが提供されるとは期待できないことがわかりました。20 分または 30 分に設定すると、はるかに多くのキャッシングが行われます。

学んだことをまとめた詳細なブログ記事を書きました。これを手伝ってくれたGarry Shulterに感謝します。

于 2012-05-14T17:05:50.173 に答える