0

**最初に以下のアップデートを読むことをお勧めします**

Drupal サイトを構築しています。nginx と varnish で構成しました。サーバーにApacheをインストールしていません。

パフォーマンスの向上に努めています。重要なことの 1 つは、最初のリクエスト (単一のページ読み込みで、たとえば、F5 を押した後の最初のリクエスト) は、他のリクエストよりもはるかに時間がかかることです。

応答:

Accept-Ranges       bytes
Age                 0
Cache-Control       no-cache, must-revalidate, post-check=0, pre-check=0
Connection          keep-alive
Content-Encoding    gzip
Content-Language    en
Content-Length      7541
Content-Type        text/html; charset=utf-8
Date                Fri, 08 Nov 2013 15:55:07 GMT
Etag                "1383926106"
Expires             Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified       Fri, 08 Nov 2013 15:55:06 +0000
Server              nginx/1.1.19
Via                 1.1 varnish
X-Powered-By        PHP/5.3.10-1ubuntu3.8
X-Varnish           1319371045

リクエスト:

Accept              text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding     gzip, deflate
Accept-Language     nl,en-us;q=0.7,en;q=0.3
Connection          keep-alive
Cookie              has_js=1
Host                _____________________ (removed by me)
Referer             _____________________ (removed by me)
User-Agent          Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0

これは、firebug のタイムライン (オランダ語からの翻訳) です。

Block:              123ms
Dns, Connect, Send: 0
Wait:               1.29s
Receive:            22ms
  1. 応答ヘッダーに基づいて、ページが実際にキャッシュから提供されたと結論付けることができますか?
  2. なぜそんなに時間がかかるのですか?ページを提供するために nginx と varnish によって実行される手順を分解する方法はありますか?

アップデート:

nginx のデバッグ ログを有効にした後、次のことがわかりました。

....
2013/11/08 17:23:05 [debug] 4992#0: *3786 http run request: "/index.php?"
2013/11/08 17:23:05 [debug] 4992#0: *3786 http upstream check client, write event:1, "/index.php"
2013/11/08 17:23:05 [debug] 4992#0: *3786 http upstream recv(): -1 (11: Resource     temporarily unavailable)
2013/11/08 17:23:06 [debug] 4992#0: *3786 post event 00000000021FFD78
2013/11/08 17:23:06 [debug] 4992#0: *3786 post event 000000000221CEB8
....

秒が変わるのは偶然ではありません(したがって、「リソースが一時的に利用できません」には1秒かかると思います)。

4

2 に答える 2

1

X-Varnish ヘッダーには数字 (xid) が 1 つしかないため、これはキャッシュ ヒットではなかったことがわかります。キャッシュ ヒットは、現在の xid と、最初にバックエンド フェッチを行った xid の両方を参照します。

Expires ヘッダーは過去のものです。つまり、Varnish は (デフォルトで) キャッシュしません。

これは応答に時間がかかるバックエンドであり、応答が完了すると、キャッシュできない応答が送信されます。

于 2013-11-11T08:56:02.103 に答える
0

を回避するには、Drupal ページ キャッシュを有効にする必要がありますCache-Control : no-cache, must-revalidate, post-check=0, pre-check=0。これにより、Varnish が応答をキャッシュできなくなります。

于 2013-11-20T09:44:36.750 に答える