4

Web サーバーの 1 つの負荷を減らしたいと考えており、リバース プロキシとして構成された squid を使用していくつかのテストを実行しています。

構成は以下の備考にあります。

http_port 80 accel defaultsite=original.server.com

cache_peer original.server.com 親 80 0 no-query originserver name=myAccel

acl our_sites dstdomain .contentpilot.net

http_access allow our_sites

cache_peer_access myAccel allow our_sites

cache_peer_access myAccel すべて拒否

私たちが直面している状況は、サーバーがほぼ常に TCP_MISS を返しているということです。

1238022316.988     86 69.15.30.186 TCP_MISS/200 797 GET http://original.server.com/templates/site/images/topnav_givingback.gif - FIRST_UP_PARENT/myAccel -
1238022317.016     76 69.15.30.186 TCP_MISS/200 706 GET http://original.server.com/templates/site/images/topnav_diversity.gif - FIRST_UP_PARENT/myAccel -
1238022317.158     75 69.15.30.186 TCP_MISS/200 570 GET http://original.server.com/templates/site/images/topnav_careers.gif - FIRST_UP_PARENT/myAccel -
1238022317.344     75 69.15.30.186 TCP_MISS/200 2981 GET http://original.server.com/templates/site/js/home-search-personalization.js - FIRST_UP_PARENT/myAccel -
1238022317.414     85 69.15.30.186 TCP_MISS/200 400 GET http://original.server.com/templates/site/images/submenu_arrow.gif - FIRST_UP_PARENT/myAccel -
1238022317.807     75 69.15.30.186 TCP_MISS/200 2680 GET http://original.server.com/templates/site/js/homeMakeURL.js - FIRST_UP_PARENT/myAccel -
1238022318.666   1401 69.15.30.186 TCP_MISS/200 103167 GET http://original.server.com/portalresource/lookup/wosid/intelliun-2201-301/image2.jpg - FIRST_UP_PARENT/myAccel image/pjpeg
1238022319.057   1938 69.15.30.186 TCP_MISS/200 108021 GET http://original.server.com/portalresource/lookup/wosid/intelliun-2201-301/image1.jpg - FIRST_UP_PARENT/myAccel image/pjpeg
1238022319.367     83 69.15.30.186 TCP_MISS/200 870 GET http://original.server.com/templates/site/images/home_dots.gif - FIRST_UP_PARENT/myAccel -
1238022319.367     80 69.15.30.186 TCP_MISS/200 5052 GET http://original.server.com/templates/site/images/home_search.jpg - FIRST_UP_PARENT/myAccel -
1238022319.368     88 69.15.30.186 TCP_MISS/200 5144 GET http://original.server.com/templates/site/images/home_continue.jpg - FIRST_UP_PARENT/myAccel -
1238022319.368     76 69.15.30.186 TCP_MISS/200 412 GET http://original.server.com/templates/site/js/showFooterBar.js - FIRST_UP_PARENT/myAccel -
1238022319.377    100 69.15.30.186 TCP_MISS/200 399 GET http://original.server.com/templates/site/images/home_arrow.gif - FIRST_UP_PARENT/myAccel -

すでにすべてのキャッシュ メモリを削除しようとしました。何か案は。私の Web サイトは、プロキシによって最後に要求されてから変更されていないにもかかわらず、毎回異なるコンテンツの一部をマークしている可能性がありますか?

4

2 に答える 2

3

オリジンサーバー(Webサーバー)がコンテンツとともに送り返すヘッダーは何ですか?squidでキャッシュできるようにするには、通常、応答ヘッダーでLast-ModifiedまたはETagのいずれかを指定する必要があると思います。Webサーバーは通常、静的コンテンツに対してこれを自動的に実行しますが、コンテンツが動的に提供されている場合(静的ソースからであっても)、コンテンツがそこにあることを確認し、If-Modified-SinceやIf-などの要求ヘッダーを処理する必要があります。なし-一致します。

また、セッションに関する次の質問でこの質問を指摘されたので、応答に「Vary」ヘッダーが表示されますか?たとえば、「Vary:Cookie」は、コンテンツがリクエストのCookieヘッダーに応じて変化する可能性があることをキャッシュに通知します。したがって、静的コンテンツはそれを削除する必要があります。ただし、セッションがある場合は、提供されるデータの静的/動的な性質に関係なく、Webサーバーがすべてのリクエストにそれを追加している可能性があります。

私の経験では、キャッシュにどのような影響があるかを確認するためにHTTPヘッダーを試してみると、非常に有益です。解決策が必ずしも明白ではないことがわかったのを覚えています。

于 2009-04-17T11:03:53.313 に答える
1

firefoxでwiresharkまたはfirebugで返されたヘッダーを調べます(後者の方が簡単に操作できますが、前者の方が必要になった場合に、より低レベルの情報が得られます)。

応答ヘッダーでこれらの項目を探します(「ネット」ビューで項目をクリックして展開し、要求ヘッダーと応答ヘッダーを表示します)。

  • 最終変更日->過去に適切な時間に設定されていない場合、キャッシュされません
  • Etags->同じアイテムがリクエストされるたびにこれらが変更されると、再フェッチされます
  • Cache-Control-> max-age = 0のクライアントからのリクエストは、毎回ページの新しいコピーをリクエストします(私は信じています)
  • (編集) Expiresヘッダー->これが過去に設定されている場合(つまり、常に期限切れ)、squidはそれをキャッシュしません

araqnidが示唆しているように、HTTPヘッダーは、プロキシがキャッシュできると考えるものに大きな違いをもたらす可能性があります。バックエンドがapacheを使用している場合は、PHPやその他のアプリケーション層を経由せずに提供される静的ファイルがキャッシュ可能であることをテストします。

また、maximum_object_sizeとminimum_object_sizeのsquid設定が適切な値に設定されていること(デフォルトは4Mbと0kbで、これで問題ありません)、および最大キャッシュアイテムの経過時間も適切に設定されていることを確認してください。(この設定およびその他の設定については、 http://www.visolve.com/squid/squid30/cachesize.php#maximum_object_sizeを参照してください)

于 2009-04-21T10:48:27.000 に答える