ホームページ > バックエンド開発 > PHPチュートリアル > Smartyのキャッシュクリア判定の設計スキルを教えてください。

Smartyのキャッシュクリア判定の設計スキルを教えてください。

WBOY
リリース: 2016-06-23 14:21:54
オリジナル
1013 人が閲覧しました

今日、smarty の学習を始めたばかりです...
キャッシュのクリアに関する判断が明確ではありません。アドバイスをお願いします:

ホームページやディレクトリのキャッシュはわかりやすく、たくさんあります。キャッシュがない場合は、毎回データベースを確認する必要があります
しかし、記事の具体的な内容に関しては、その必要はありませんか?
状況 1: 記事が変更された場合、キャッシュをクリアする必要があります。記事が変更されたことを確認するにはどうすればよいですか?データベースの更新時刻を確認します... 更新時刻と記事の内容がバインドされてテーブルに配置されます... これと直接クエリの違いは何ですか?
状況 2: 記事がクリックされた後、このクリック数の記録が記事のデータ テーブルに配置されます... クリック数を取得するには、さらにクエリを実行する必要があります。記事のデータテーブル(クリック数やテキストもIt's a watchに配置されています)…何が違うのでしょうか?さらにクリック数のテーブルを作成して記事テーブルに接続する…このデータベース設計無茶苦茶すぎませんか?


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

ケース 1: is_cached() メソッドを使用して判断できます
ケース 2: クリック数を取得して記事テーブルを確認する これは驚くべきことではありません。 。 。

ケース 1: is_cached() メソッドを使用して決定できます
ケース 2: クリック数を取得し、記事テーブルを確認します これは驚くべきことではありません。 。 。
状況 1: API を読んだ後、is_cached を使用してテンプレートとクエリ パラメーターを通じて判断できることがわかりました。通常の状況では、API は直接キャッシュされます。私は怠け者なので、サーバーも怠け者なので、このキャッシュは 10 年間続くと考えられます。ただし、誰かがこの記事を編集する場合があります。記事が編集されたかどうかを知りたい場合は、編集後に最終編集時刻を変更するだけで済みます。しかし、この方法では、閲覧するたびに記事が編集されたかどうかがわからないため、依然としてデータベースにクエリを実行する必要があり、キャッシュの役割を果たしていないように感じます...
状況 2:それはすでに考えがあります...

実際、これは、異なる ID をクエリするために 10,000 回ループする SQL ステートメントを作成することで判断できるでしょうか?
言い換えると、select * from tablea where `id` = $id が select `modifydt` from tablea where `id`=$id よりも多く消費する場合、実際には、ほとんどの場合、データのクエリの消費が少なくなるだけです。 。
でも、テストするのが面倒です... 答えを直接教えてください...

ケース 1 の場合:
これは、記事をキャッシュする場合、ファイルを維持するのと同じです。データベースを自分で作成します
需要があれば、それもデータをキャッシュする代わりに静的ページを生成します
記事が変更された場合は、静的ページを再生成するだけです

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート