イカのキャッシュ-パート2

Squidは、プロキシおよびキャッシュサービスであるだけでなく、さらに多くのことを実行できます。acl(アクセスリスト)の管理、コンテンツのフィルタリング、透過モード(プロキシ方式-プロキシ設定で構成する必要なし)でもsslフィルタリングを実行できます。あなたのブラウザから、それは真ん中の人間のようです、誰もそれがそこにあることを知りません)。 そのため、各パーツの構成方法がわからないために、このアプリケーションの可能性を最大限に活用する方法がよくわかります。

さて、squidが行う興味深いことは、キャッシュです(私の意見では)。 なぜキャッシュするのか教えてください。理由は単純で、速度と帯域幅の使用をより適切に管理することが主な理由です。 よく考えてください。社内の1000人が5分ごとに相談し、一般的なページ、Google、Hotmail、Gmailなど...画像、バナー、広告、htmlコンテンツを何度もダウンロードするように、これらはすべて静的なものです。それらは非常に頻繁に変更されるため、ローカルネットワークに保存して、検討した構成内で最近検討したコピーを配信することをお勧めします。

それを行う方法は?次の文で簡単です:

refresh_pattern [-i] regex min percent max [options]

私がいつも言っているように、何でも鵜呑みにしないでください。公式の情報源から読むことをお勧めします。この裁定に関するマニュアルは、こちらからご覧いただけます。

refresh_patternステートメントは、キャッシュに新しいパラメータを追加するためのタグとして常に使用されます。

重要なのは、キャッシュリストはシーケンシャルである必要があります。これは、オブジェクトに一致する最初のリストと一致すると、他のルールの読み取りを続行しないためです。

正規表現は大文字と小文字を区別するため、flv と FLV は同じではありませんが、 -iオプションを使用することでこれを回避できます。その場合、次のようになります: refresh_pattern -i

「分」:これは、明示的な「期限切れ」タグが付いていないオブジェクトが「最新」とみなされる時間(分単位)です。デフォルトでは、Squid は 0 を推奨しています。これは、動的なアプリケーションによっては予期しない動作をする可能性があるためです。この値は、キャッシュしたい要素にとって有用かつ効果的だと考えられる数値にしてください。たとえば、JPG の場合、1440 分(1 日)で十分だと思います。ウェブサイトの投稿内の画像が 5 分ごとに変わるわけではないからです。

「パーセント」とは、オブジェクトの経過時間(最終更新からの経過時間)のうち、「最近」または「最新」とみなされる割合のことです。例えば、最新の変更内容を確認するためにウェブページを頻繁に再読み込みまたは更新している場合、Squidは、オブジェクトが最小値と最大値の間の時間の50%に達したと判断すると、そのオブジェクトをインターネットから再度ダウンロードして、最新のコピーを提供する可能性があります。

「Max」は、 「Min」以上の値で、オブジェクトが「最新」または「新しい」とみなされる期間の上限です。たとえば、ページ上の画像がユーザーによって一度だけ閲覧された場合、そのオブジェクトは既に最小時間に達していますが、最大時間には達していません。そのため、再度閲覧された際には、キャッシュされたコピーが配信されます。

Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale

これらのオプションは、キャッシュの効果的な使用を保証するために、言語とプロトコルで事前に確立された動作を無視するために主に作成されました。

override-expire

サーバーがより短い有効期限を送信した場合でも、オブジェクトの最小時間を強制します(ヘッダーやCache-Control:max-ageなどの例)。 これを行うと、「HTTP標準に違反します」のような「警告」が表示されますが、これは無視できる警告にすぎません。 サーバーが送信する時間が長い場合、squidはサーバーの時間(有効期限)を取ります

override-lastmod

アイテムが最近変更された場合でも、アイテムの最小時間を強化します。

reload-into-ims

簡単に説明すると、更新ボタンを押したり、キャッシュなしのリクエストを行ったりしたときに、「以降」変更されていない場合やページに「ヘッダー」がない場合に、squidがキャッシュを配信するのを防ぐことができます。

ignore-reload

ページの再読み込みまたは更新ボタンを押すユーザーのアクションを無視します

ignore-no-store

ビデオなど、キャッシュしないヘッダーのルールを無視します

ignore-private

キャッシュしてはならないプライベートコンテンツヘッダーのルールを無視します。例:facebookコンテンツ。

refresh-ims

Squidはサーバーに接続して、オブジェクトが最新かどうかを確認します。 もしそうなら、それはキャッシュを配信します

store-stale

Squidは、有効期限がない場合でも、これらすべての応答を保存します。通常は再利用できないため、これは非常に実用的ではありません。 有効にする場合は、max-stale = NNを宣言する必要があります

max-stale=NN

上記を有効にした場合は、その応答または要因の最大存続期間を宣言する必要があります。 Squidはこのスタイルのオブジェクトを配信しませんが、ソースで検証できます

これは、私たちが議論した値に従って、新鮮な「FRESH」の状態がどのように機能するかの表です:

  • 有効期限が切れている場合はFRESH>今、それ以外の場合はSTALE
  • 年齢>最大の場合はSTALE
  • lm-factor <percentの場合はFRESH、それ以外の場合はSTALE
  • 年齢<分以外の場合はフレッシュSTALE

これは、多くのディスクスペース、優れた機器、および優れた帯域幅を備えた特定の会社の構成例です。

refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
cache_mem 8092 MB

キャッシュはハードディスクだけでなく、RAMにも保存できるようになりました。この値はSquidプロセスごとに適用されるため、SquidGuardなどのリダイレクタを使用する際には考慮する必要があります。

maximum_object_size_in_memory 1024 KB

squidがRAMに保存するメモリ内のオブジェクトの最大サイズ。 最小値を宣言することもできます。


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

ご覧のとおり、2つはRAMメモリのキャッシュを、もうXNUMXつはハードディスクのキャッシュを置き換えるためのポリシーです。 GDSFとLFUDAのXNUMXつのポリシーがあります。 XNUMXつ目は、キャッシュヒットの割合を改善することを目的としており、多くの小さなオブジェクトが手元にあります。XNUMXつ目は、反対のことを目的として、サイズに関係なくオブジェクトをキャッシュに保持します。

あなたが今私に尋ねていると思う質問は、私はどのような用途を使用するのかということです。あなたの環境で彼らが多くのクエリを実行し、逆に多くのダウンロードと少数のLFUDAクエリを実行する場合、GDSFを使用するダウンロードはほとんどありません。 やろうとしているときにLFUDAをお勧めするなら、私にはわかりませんが、1TBのディスクにキャッシュする方が効率的です。

maximum_object_size 4 MB

オブジェクトを保存する必要がある最大サイズ

cache_dir aufs /media/proxy249/cache 100 16 256

キャッシュが保存される場所、ここで重要なのは、ufs、aufs、またはdiskdを使用する場合、3つすべてがほぼ同じように機能することです。違いは、aufsとdiskdが別々のプロセスで動作して、ハードディスク上でI / O操作を実行することです。これらの操作中にsquidプロセスがハングするのを避け、さらにディスクを使用して、このタスクに使用するスレッドの数を指定できます。 良いチームがあれば、aufsをお勧めします。

サイズ100(メガバイト)、100000を置くことができますほぼ100GBはあなたの可用性に依存します。 16はフォルダの数、256はサブフォルダの数です。 両方の値で遊ぶことができますは、ディスクの速度とリソースの量によって異なります。


cache_swap_low 90
cache_swap_high 95

これらのオプションはオブジェクト置換値であり、イカによる透かしとしての最小値と最大値です。これらの数値はパーセンテージ(%)で表され、非常に小さいキャッシュでは、現在このように5%は、たとえば300秒あたりXNUMXオブジェクトになります。 、しかし非常に大きなキャッシュでは、数千MBについて話します

さて、今回はここまでです。コメントをお待ちしています。また、Squid 3.5以降でHTTPS(SSL)ページをキャッシュおよびフィルタリングできないと報告してくださった方々からのご意見も参考にしてください。近いうちに解決策をお伝えしますので、このブログにご注目ください。


Googleで優先ソースとして追加する