web-dev-qa-db-ja.com

joomla 2.5のコンサバティブキャッシングとプログレッシブキャッシングの違いは何ですか?

JoomlaのGlobalConfigでは、2つのキャッシュが保守的で進歩的ですが、両方の違いは何ですか?

24
Hai Truong IT

コンサバティブキャッシングは標準タイプのキャッシングです。仕組みは次のとおりです。

  • 訪問者がWebサイトのページにアクセスします。

  • Joomlaは、キャッシュディレクトリにそのページの有効期限が切れていないバージョンがあるかどうかを確認します。

  • キャッシュされたページが存在する(そして有効期限が切れていない)場合、Joomlaはそれを訪問者に提供します-そうでない場合、ページのキャッシュされたバージョンが作成され、そのキャッシュされたバージョンは訪問者と他のすべての結果として生じる訪問者に提供されます。有効期限が切れていない限り(「それ」とはページを意味します)。

上記のシナリオは典型的なものであり、ほとんどの開発者がキャッシュを実装する方法です。

プログレッシブキャッシングは次のように機能します。

  • 訪問者がWebサイトのページにアクセスします。

  • Joomlaは、そのページのキャッシュバージョンがその訪問者に存在し、まだ有効期限が切れていないかどうかを確認します。

  • そのキャッシュされたページが存在する場合、それは訪問者に提供されます。そうでない場合、Joomlaはその特定の訪問者のためにキャッシュされたページを作成し、それを彼に提供します。

  • 別の訪問者(そのページに一度もアクセスしたことがない)がそのページにアクセスした場合、Joomlaは前の訪問者のキャッシュされたページを提供せず、代わりにそのページのキャッシュされたバージョンを作成します
    特にそのユーザーのために、そしてそれを彼に提供します。

ご覧のとおり、プログレッシブキャッシュでは、キャッシュされたバージョンのページの有効期間内に同じ訪問者が同じページにアクセスした場合にのみ、パフォーマンスが向上します。ほとんどのシナリオでは、プログレッシブキャッシュは、キャッシュを無効にするよりもはるかに悪いパフォーマンスへの大きな打撃をもたらします。これは、ほぼすべての訪問で、Joomlaがリクエストを処理し、キャッシュされたバージョンのページを作成してから、訪問者にページを提供する必要があるためです。 (キャッシュが無効になっているシナリオでは、リクエストを処理してページを提供するだけではありません)。ああ、Joomlaによって生成されたすべてのキャッシュファイルを忘れないでください。トラフィックの多いニュースWebサイト(ページ数が多い)がある場合にのみ、キャッシュフォルダーにこれらのファイルがいくつあるかを想像できます。

プログレッシブキャッシングはどのような状況で役立つのでしょうか。さて、あなたがビデオウェブサイト(youtubeに似ている)を持っていると想像してください。あなたは、各訪問者の場所やブラウザの設定、インストールされているプラ​​グインに基づいてカスタマイズされたページを表示したいと考えています。したがって、訪問者がロードするすべてのページについて、この情報を使用してそのページのカスタマイズされたバージョンを生成し、それをキャッシュします。訪問者が同じページに再度アクセスした場合、Joomlaはカスタマイズされたページを生成するために作業をやり直す必要はありません。

もちろん、プログレッシブキャッシュが本当に役立つシナリオはたくさんありますが、私たちの意見では、プログレッシブキャッシュは、Webサイトが多くの訪問者を受け入れ、それらの訪問者がほとんどリピーターである場合にのみ検討する必要があります。それ以外の場合に使用すると、Webサイトのパフォーマンスに大きな影響を及ぼします。

ここ から抽出。

31
Techie

訪問者ごとの一意のキャッシュ

  • 控えめなキャッシュは、サイトへのすべての訪問者に同じ正確にキャッシュされたコンテンツを表示します。

  • プログレッシブキャッシュただし、各ユーザーのコンテンツを一意にキャッシュします。

リンク から@Tornadoのコメントで提供

11
Sam

プログレッシブキャッシングは、バッファがプログレッシブに更新されるという違いを除いて、コンサバティブキャッシングと同じように機能します。

JApplicationCMS(プログレッシブキャッシュが設定されている)のレンダリング関数を見ると、ログインしているユーザーには適用できないことがわかります。 https://github.com/joomla/joomla-cms/blob/staging/libraries/cms/application/cms.php

if ($this->isSite() && $this->get('caching') && $this->get('caching', 2) == 2 && !JFactory::getUser()->get('id'))
    {
        $caching = true;
    }

さらに、ブラウザまたはIP間で同じページのキャッシュIDをダンプすると、同じキャッシュIDが取得されます。

プログレッシブキャッシュの典型的な作業は、JCacheのgetWorkaroundsとsetWorkaroundsで行われます。ただし、cbufferが扱いにくくなり、問題が発生する場合があることに注意してください。

1
Wayne DSouza