PHP の Yii フレームワークにおけるキャッシュの高度な使用方法の紹介、phpyii フレームワーク caching_PHP チュートリアル

WBOY
リリース: 2016-07-12 08:55:12
オリジナル
824 人が閲覧しました

PHP の Yii フレームワーク、phpyii フレームワークのキャッシュの高度な使用方法の紹介

ページのキャッシュ
ページのキャッシュとは、サーバー側でページ全体のコンテンツをキャッシュすることを指します。その後、同じページがリクエストされると、コンテンツは再生成されるのではなく、キャッシュからフェッチされます。

ページのキャッシュは、フィルターである yiifiltersPageCache クラスによってサポートされています。次のようにコントローラー クラスで使用できます:

リーリー

上記のコードは、ページ キャッシュがインデックス操作中にのみ有効になることを示しています。ページ コンテンツは最大 60 秒間キャッシュされ、現在のアプリケーションの言語が変更されると変更されます。総記事数が変化すると、キャッシュされたページは無効になります。

ご覧のとおり、ページ キャッシュとフラグメント キャッシュは非常に似ています。これらはすべて、期間、依存関係、バリエーション、有効な構成オプションをサポートしています。これらの主な違いは、ページ キャッシュがフィルターによって実装されるのに対し、フラグメント キャッシュはウィジェットであることです。

ページ キャッシュを使用しながら、フラグメント キャッシュと動的コンテンツを使用できます。

HTTPキャッシュ

サーバー側のキャッシュに加えて、Web アプリケーションはクライアント側のキャッシュを使用して、同じページ コンテンツの生成と送信時間を節約することもできます。

yiifiltersHttpCache フィルターを構成すると、コントローラーの操作によってレンダリングされたコンテンツをクライアントにキャッシュできます。 yiifiltersHttpCache フィルターは GET リクエストと HEAD リクエストにのみ有効で、これらのリクエストに対して 3 つのキャッシュ関連の HTTP ヘッダーを設定できます。

  • yiifiltersHttpCache::lastModified
  • yiifiltersHttpCache::etagSeed
  • yiifiltersHttpCache::cacheControlHeader

最終変更ヘッダー

Last-Modified ヘッダーはタイムスタンプを使用して、クライアントが最後にページをキャッシュしてからページが変更されたかどうかを示します。

yiifiltersHttpCache::lastModified プロパティを構成して、Last-Modified ヘッダーをクライアントに送信します。この属性の値は PHP 呼び出し可能なタイプである必要があり、ページが変更されたときの Unix タイムスタンプを返します。この呼び出し可能なパラメータと戻り値は次のようになります:

リーリー

Last-Modified ヘッダーを使用した例を次に示します:

リーリー

上記のコードは、HTTP キャッシュがインデックス操作中にのみ有効になることを示しています。ページの最終変更時刻に基づいて Last-Modified HTTP ヘッダーを生成します。ブラウザが初めてインデックス ページにアクセスすると、サーバーはページを生成し、クライアント ブラウザに送信します。その後、ページが変更されていないときにクライアントのブラウザーがページにアクセスすると、サーバーはページを再生成せず、ブラウザーは前のクライアントによってキャッシュされたコンテンツを使用します。したがって、サーバー側のレンダリングとコンテンツの送信は省略されます。

ETタグヘッダー

「エンティティ タグ」(略して ETag) は、ハッシュ値を使用してページのコンテンツを表します。ページが変更されている場合、ハッシュ値も変更されます。クライアント側のハッシュ値とサーバー側で生成されたハッシュ値を比較することで、ブラウザはページが変更されたかどうかを判断し、コンテンツを再送信する必要があるかどうかを判断できます。

yiifiltersHttpCache::etagSeed プロパティを構成して、ETag ヘッダーをクライアントに送信します。この属性の値は PHP 呼び出し可能なタイプである必要があり、ETag ハッシュ値の生成に使用されるシード文字を返します。この呼び出し可能なパラメータと戻り値は次のようになります:

リーリー

以下はETagヘッダーの使用例です:

リーリー

上記のコードは、HTTP キャッシュが表示操作中にのみ有効になることを示しています。ユーザーのリクエストのヘッダーとコンテンツに基づいて ETag HTTP ヘッダーを生成します。ブラウザがビュー ページに初めてアクセスすると、サーバーはページを生成し、クライアント ブラウザに送信します。その後、クライアントのブラウザのタイトルとコンテンツが変更されていない場合、その期間中にページがアクセスされた場合、サーバーはページを再生成せず、ブラウザは前のクライアントによってキャッシュされたコンテンツを使用します。したがって、サーバー側のレンダリングとコンテンツの送信は省略されます。

ETag は、Last-Modified よりも複雑で正確なキャッシュ戦略を実装できます。たとえば、サイトが別のテーマに切り替わると ETag が無効になる可能性があります。

各リクエストに応じて Etag を再計算する必要があるため、複雑な Etag 生成シードは HttpCache を使用する本来の目的を無効にし、不要なパフォーマンスのオーバーヘッドを引き起こす可能性があります。 Etag の失敗を引き起こす最も簡単な式を見つけてみてください。

注: RFC 7232 (HTTP 1.1 プロトコル) に準拠するために、ETag ヘッダーと Last-Modified ヘッダーの両方が設定されている場合、HttpCache はそれらを同時に送信します。また、クライアントが If-None-Match ヘッダーと If-Modified-Since ヘッダーの両方を送信した場合、前者のみが受け入れられます。
キャッシュ制御ヘッダー

Cache-Control ヘッダーは、ページの一般的なキャッシュ戦略を指定します。対応するヘッダー情報は、yiifiltersHttpCache::cacheControlHeader プロパティを構成することで送信できます。次のヘッダーがデフォルトで送信されます:

リーリー

セッションキャッシュリミッター

ページがセッションを使用する場合、PHP は、PHP.INI で設定された session.cache_limiter 値に従って、キャッシュ関連の HTTP ヘッダーを自動的に送信します。これらの HTTP ヘッダーは、最初に設定した HttpCache を妨げたり、無効にしたりする可能性があります。この問題を回避するために、HttpCache はデフォルトでこれらのヘッダーの自動送信を無効にします。この動作を変更するには、yiifiltersHttpCache::sessionCacheLimiter プロパティを設定します。このプロパティは、public、private、private_no_expire、nocache などの文字列値を受け入れます。これらの値の意味については、PHP マニュアルの「キャッシュ リミッター」を参照してください。

SEOへの影響

検索エンジンはサイトのキャッシュ ヘッダーを追跡する傾向があります。一部のクローラーのクロール頻度は制限されているため、キャッシュ ヘッダーを有効にすると、繰り返されるリクエストの数が減り、クローラーのクロール効率が向上します。

興味があるかもしれない記事:

  • PHP の Yii フレームワークに付属するフロントエンド リソース パッケージの使用方法の詳細な説明
  • PHP の Yii フレームワークのキャッシュ機能の詳細な分析
  • のビューの高度な使用PHPのYiiフレームワーク
  • PHPのYiiフレームワークでビューを作成およびレンダリングする方法の詳細な説明
  • PHPのYiiフレームワークのModelモデルの学習チュートリアル
  • PHPのYiiフレームワークのControllerコントローラの詳細な説明
  • コンポーネントを削除するときの手順PHPのYiiフレームワークより バインディング動作メソッド
  • PHPのYiiフレームワークにおける動作定義とバインディングメソッドの説明
  • PHPのYiiフレームワークにおけるプロパティ(Property)の徹底解説
  • PHPのYiiフレームワークにおける拡張機能のインストールと使い方の詳細な説明

www.bkjia.com本当http://www.bkjia.com/PHPjc/1117068.html技術記事 PHP の Yii フレームワークにおけるキャッシュの高度な使用法の紹介。phpyii フレームワークはページ キャッシュをキャッシュします。ページ キャッシュとは、サーバー側でページ全体のコンテンツをキャッシュすることを指します。次に、同じページがリクエストされると...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート