ホームページ  >  記事  >  バックエンド開発  >  なぜsmartyを使用した後にmemcacheを使用する必要があるのか​​よくわかりません~~~~

なぜsmartyを使用した後にmemcacheを使用する必要があるのか​​よくわかりません~~~~

WBOY
WBOYオリジナル
2016-06-23 14:26:02876ブラウズ

Smarty + memcache が最適化の組み合わせだと言われていますが、smarty を使ってみるとなぜ memcache が必要なのかわかりません〜
Smarty にはページキャッシュがあるので、例えば今ページ A があり、キャッシュ時間を指定するが 10 分の場合、論理演算を 10 分ごとに実行するだけで済みます。 memcache の用途は何ですか?

Smarty と memcache がどのように一緒に使用されるかについての小さな例を教えてください。

みなさん、ありがとうございました!


ディスカッションへの返信(解決策)

Memcache はメモリに保存され、smarty はメモリに保存される方がデータを読み込むのが速いという原則があります。違う

Memcache はメモリに保存され、smarty はメモリからのデータの読み取りが高速になるはずです。 この 2 つの原理を見てください。 。
あなたが言いたいのは、memcache はスマート静的キャッシュよりも高速ですよね?

これで、smarty がキャッシュできるようになりました。 memcache を使用する理由

理由は非常に単純です。操作メカニズムとアプリケーションの範囲が異なるため、smarty は少数の若手 PHP プログラマーのみに使用されているのに対し、memcache は広く採用されており、メモリベースのデータベース システムはそこから派生したものです

Smarty はキャッシュできます。 memcache を使用する理由

2 つの最適化は通常、一緒に使用されませんか?


理由は非常に単純です。操作メカニズムと適用範囲が異なるため、smarty は少数の若手 PHP プログラマーのみに使用されているのに対し、memcache は広く採用されており、メモリベースのデータベース システムはそこから派生したものです

え?静的ページのキャッシュは現在非常に人気があるのではないでしょうか?


1 つはデータ用で、もう 1 つはアクセスしたページ用です。たとえば、最も一般的に使用される方法は、クエリされたデータを memcache に保存することであり、高度なリアルタイム更新を必要としない一部のページでは、スマート キャッシュが使用されます。効果の範囲は異なります。ニンジンを食べるとスイカも食べるようなものです。ニンジンを食べるとビタミンCが増加し、スイカを食べるとビタミンDが増加します。これについてまだ混乱している場合は、もう心配する必要はありません。 1 つは、特定のアクセスされたページのデータの場合、最も一般的に使用される方法は、クエリされたデータを memcache に保存することであり、高度なリアルタイム更新を必要としない一部のページには、スマート キャッシュが使用されます。にんじんを食べるとスイカも食べるべき、にんじんを食べるとビタミンCが増え、スイカを食べるとビタミンDが増えるなど、効果の範囲は異なります。まだ迷っている方も、心配する必要はありません。たとえば、データベースから 3 つの結果セットを取得する必要があるとします。

次に、このページが静的にキャッシュされ、5 分ごとに更新されるように設定します。

この場合、memcacheを使っても使わなくても同じではないでしょうか?


7 階の回答からの引用:

1 つはデータ用で、もう 1 つはアクセスしたページ用です。たとえば、最も一般的に使用される方法は、クエリされたデータを memcache に保存することです。リアルタイム更新は Smarty にキャッシュされており、その影響範囲は異なります。ちょうど、ニンジンを食べてからスイカを食べると、ニンジンを食べるとビタミン C が増加し、スイカを食べるとビタミン D が増加するのと同じです。これについてまだ混乱している場合は、今は気にせず、後で待ってください。遅いかどうかはわかります

たとえば、現在 5 分ごとに更新する必要があるページがあります...

です。ページがキャッシュされている場合でも、ページを更新するたびにデータベースを選択する必要があるため、異なります。フロント ページが変更されていないだけですが、たとえば memcache を使用する場合、その時間は 5 分です。この 5 分間はデータベースはクエリされないので、データベース リソースは保存されます。Smarty のキャッシュは、テンプレート変数を解析する機能を保存するものではありません。実際、この 2 つの関係はそれほど大きくありません。共通しているのは、両方ともキャッシュと呼ばれることです。他はまったく比較できません

8 階の回答からの引用:

7 階の回答からの引用:

1 つはデータ用で、もう 1 つはアクセスしたページ用です。たとえば、最も一般的に使用される方法は、クエリされたデータを memcache に保存することです。一部のページはリアルタイムです。更新要件が高くない場合は、スマート キャッシュが存在します。ニンジンを食べてスイカを食べると、ニンジンを食べるとビタミン C が増加し、スイカを食べるとビタミン D が増加するのと同じです。これについてまだ混乱している場合は、今は心配しないでください。後でわかります

たとえば、今はこんなページがあります...
え? ? ?
現在のページがキャッシュされているかどうかを判断する機能がありません: is_cached()
それを使用して判断します。すでにキャッシュされていて有効期限が切れていない場合は、データベースをチェックする必要はなく、静的ファイルを確認できます。直接読んでください。

2 つの異なること...kyzy が言ったように。これらはすべてキャッシュを提供すると言われていますが、キャッシュの具体的なオブジェクトと実装方法は異なります。さまざまなSMセッションを経て、私たちはお互いに寛容になりましたが、まだパンツを少し脱いだように感じています。

簡単に言うと、smarty は最終結果をキャッシュし、memcache は中間部分をキャッシュします。もちろん、これはより一般的ですが、これらが同じ問題を解決する共通点ではないことをどれだけ知っていますか。

smarty のキャッシュはファイルに基づいており、filecache と呼ぶことができます
ファイルへのアクセスはメモリへのアクセスよりも明らかに遅いです
だからこそ、smarty + memcache と言われています
つまり、smarty を変更してキャッシュを memcache に入れることができます

として何をどのように使用するかはすべて計画の問題です。実装技術とは関係ありません

え? ? ?
現在のページがキャッシュされているかどうかを判断する機能がありません: is_cached()
それを使用して判断します。すでにキャッシュされていて有効期限が切れていない場合は、データベースをチェックする必要はなく、静的ファイルを確認できます。直接読んでください。

すべての方法を判断することはできません

さて、あなたが言及した 2 つの違いは理解できました。皆さん、ありがとう!
しかし、今私にとって最も混乱しているのは、どのような状況でこの 2 つを併用できるのかがわからないことです。たとえば、先ほど挙げた例:

5 分ごとに更新が必要なページがあり、データベースから取得された項目は 3 つあります。
このページの静的キャッシュを設定するために Smarty を使用しており、キャッシュ期間は 5 分です。
次に、smarty の is_cached() メソッドを使用して、キャッシュが存在し、有効期限が切れていないかどうかを判断します。条件が true の場合は静的ファイルを直接読み取ることができ、そうでない場合は値を再取得します。

このような状況では、これら 3 つの結果セットを保存するために memcache を使用しても、効果はありませんか?
それでは、この 2 つはどのような状況で併用できるのでしょうか?ちょっとした例を知りたいだけです。
皆さんありがとうございました!

10階の返信からの引用:
え? ? ?
現在のページがキャッシュされているかどうかを判断する関数がありません: is_cached()
それを使用して、すでにキャッシュされていて有効期限が切れていない場合は、データベースをチェックする必要がなく、静的ファイルを確認できます。直接読んでください。


すべてのメソッドを判断することはできませんよね
それぞれのコントローラーのメソッドでということですか?
使えると思います~~~~ どの方法でも使用する場合のデメリットはありますか?

実際、これはキャッシュの保存場所の違いであり、is_cached() を使用してキャッシュが読み取れるかどうかを判断するとき、問題はキャッシュがディスク上にあることです。アクセス数が多い場合、大量のディスク読み取りがブロックされると、システムのパフォーマンスは大幅に低下しますが、Memcache はメモリ内にあるため、ディスクよりも数桁高速です。

をブロックする可能性があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。