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

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

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

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

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

私がいつも言っているように、すべてを信じてはいけないので、公式の情報源から読んでください。 この文章のマニュアルを読むことをお勧めします こちら

リフレッシュパターン キャッシュに新しいパラメータを追加するのは常に私たちのラベルです。

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

通常の式は大文字と小文字が区別されるため、flvはFLVと同じではありませんが、必要に応じてオプションを使用してこれを回避できます。 -i 。 するとこんな感じになります リフレッシュパターン -i

「最小」: オブジェクトが「最近または新鮮」と見なされ、「期限切れ」という明示的なラベルがない場合の時間(分)です。 デフォルトでは、squidは0にすることをお勧めします。これは、一部の動的アプリケーションが奇妙に動作する可能性があるため、純粋な何とか何とか何とか、実際にはこの値は、キャッシュする要素に対して有用で効果的であると考える数値である必要があります。 例:jpg、1440分(5日)は私には問題ないように思えますが、投稿の画像がXNUMXページでXNUMX分ごとに変わるようなものではありません。

'パーセント' 「最近または新鮮」と見なされるのは、(最後の変更以降の)オブジェクトの経過時間のパーセンテージです。 説明させてください。Webページに加えられた最後の変更を確認するために、定期的なリロードまたは更新を行うと、squidは、たとえば、間に50%の時間がすでに完了しているかどうかを検討できます。 y マックス、インターネットからそのオブジェクトを再ダウンロードして、新しいコピーを提供します。

「マックス」 以上の制限です 「最小」 オブジェクトが「最近または新しい」と見なされる期間、あるページの画像がユーザーによってXNUMX回だけ参照され、そのオブジェクトがすでにその時間に達していると仮定します。 、しかし マックスその後、再度クエリを実行すると、キャッシュコピーが配信されます。

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)ページをキャッシュおよびフィルタリングできないと言った人も考慮に入れてください。すぐに紹介します。このブログにご注目ください。


記事の内容は、次の原則に準拠しています。 編集倫理。 エラーを報告するには、 ここで.

11コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   Ing。JoseAlbert

    最初の部分への優れた補完!

    Squidについては多くの文献がありますが、それぞれの説明と考えられる実際の使用シナリオを使用して、最も実用的なオプションの要点を理解できるとは限りません。

    いつものように、私はそれの第XNUMX部を楽しみにしています!

    1.    ブロディ・ダル

      ご意見をありがとうございます。 それは正しく、関連するすべての要素の簡潔な説明であり、ベストプラクティスの設定です。 しかし、私はいつもあなたのコメントと自分の経験に気を配っています。

  2.   アルタス

    こんにちは、Windowsのアップデートとアンチウイルスに問題があります。 私の施設には約120台のPCがあります。 この状況を改善する方法について教えてください。 記事にご協力とおめでとうございます。

    1.    ブロディ・ダル

      こんにちは、参加してくれてありがとう..私があなたを助けることができれば、あなたの問題が何であるかをよく説明してください、あなたはアップデートをダウンロードすることができませんか? インターネットオプションにプロキシを配置し、ブラウザのプロキシオプションにも同じものを配置しましたか?ポートを確認しましたか?またはこれらの更新をキャッシュしますか?

      1.    アルタス

        私が必要としているのは、コンピューターがWindowsまたはアンチウイルスの更新をダウンロードするたびに、約XNUMXか月間キャッシュにとどまるということです。このようにして、毎朝毎朝なので、帯域幅を節約したいと思います。すべてのコンピューターがそれぞれ同じ更新のダウンロードを開始し、接続が飽和状態になります。

        ご協力いただきありがとうございます。

    2.    マリオ

      これらは単純な暗号化されていないhttpダウンロードであるため、Squidを備えたサーバーで十分です。 キャッシュの他のソリューションは、企業では通常のWSUSとAltirisです。

      1.    アルタス

        おかげでマリオ私はそれを心に留めておきます。

    3.    ブロディ・ダル

      了解しました。このリンクを確認してください。 http://wiki.squid-cache.org/SquidFaq/WindowsUpdate。 アンチウイルスをキャッシュするには、更新がどこから、どの拡張子(.exeの例)でダウンロードされているかを知り、キャッシュする必要があります...

  3.   アルタス

    ご協力いただきありがとうございます。

  4.   エリック

    おはようございます、私の場合はサポートしていただけませんか。 私はdebian2.7にsquid9 .STABLE6を持っていて、すべてを構成していて、10 pc環境にマウントすると、通常のメールが届きます。問題は、90 pcにマウントすると数秒しか持続せず、そこから全員が彼らはインターネットなしで残されています。 サポートしてくれませんか?

  5.   ジョセ・リヴァス

    優れた説明、基本的ですが、非常に明確で正確です。 個人的に私が読むことができた最高の説明。
    質問があります。apkやxapkなどのAndroidアプリケーションをキャッシュすることは可能ですか?
    そして、ファイルの出所に関係なく、動的キャッシュを構成する正しい方法は何でしょうか?
    私はpfSense2.4.5を使用しています。