ホームページ > php教程 > php手册 > 簡易ページバッファリング技術(1)

簡易ページバッファリング技術(1)

WBOY
リリース: 2016-06-21 09:10:13
オリジナル
1001 人が閲覧しました

ページ

まえがき
実際、それをテクノロジーと呼んでも、本当のテクノロジーとは言えないかもしれません。これはあくまで私自身のページ処理方法であり、もちろん他の人の考えと一致する可能性もあります。でも、やっぱり素敵な名前を付けたいですよね。では、ここで私が言っているページバッファリングとは何でしょうか?これは、動的に生成されたページを次回使用するために保存することを意味します。こうすることで、次回アクセスするときに動的に生成する必要がなくなる可能性があります。キャッシュを提供するようなものです。私のサイト、そしておそらくあなたのサイトでも、ユーザーに表示されるページが動的に生成されるように、テンプレートなどの技術を使用しています。しかし、あなたにとってこのようなページは、他の人にとっても同様である可能性があります。つまり、一定期間は変化しないでしょう。前回生成された結果が、訪問したユーザーに直接返された方がよいと思いませんか。次回?生成時間が短縮され、効率が高くなります。ウェブサイトが発展するにつれて、速度と効率の問題を依然として考慮する必要があると思います。ここで私の実装を紹介します。皆さんのお役に立てれば幸いです。それは単なるアイデアであり、具体的な実装はありません。


使用条件
すべてのWebページで使用するのが最善ですか? 必要ないと思いますし、不可能です。バッファリングできる理由は、次のアクセスの内容が前回のアクセスの内容と全く同じである可能性があるためである。したがって、頻繁に変更されるページには適していません。たとえば、ページにカウント情報を表示することは適切ではありません。また、動的ページを最初に変数に出力せずに、echo、print、readfile、その他の出力を使用してユーザーに直接返す場合、個人的にはまだ不可能だと思います。出力結果を取得してファイルに保存することができないためです(とにかく、私は長い間考えてきましたが、出力を切り取ってファイルにリダイレクトできるものを何も思いつきませんでした)。動的ページのより適切な処理は、出力結果を文字列に配置することです。ということで、利用条件は

基本的にページは変わらない
動的ページの処理結果は文字列に保存できる

動的ページの処理にはテンプレートクラスを使うと良いです。テンプレートに置換可能な変数を設定し、実際の値に応じて対応するテンプレート内の変数を置換することにより、この種のテンプレート クラスの処理は、処理されたページを保存するのに非常に適しています。もちろん、テンプレートクラスを使用せずに文字列処理によって出力結果を生成することも可能です。それをどのように行うかについては議論されません。


実装
前述したように、これは実際の実装ではなく、実装のアイデアです。
処理の流れ:
1. アクセス要件に応じてバッファファイル名を生成します。
2. ファイル名が存在するかどうかを確認し、ファイルが存在しない場合は、動的ページを生成し、同時に結果を出力し、存在する場合はステップ 3 を実行します。
3. ファイルの変更時間と動的ページ生成に関連するファイルの変更時間をカウントします。

4. バッファ ファイルの変更時間を他のページの変更時間と比較します。他のページの変更時間がバッファ ファイルの変更時間よりも大きい場合、動的結果が変化する可能性があると考えられます。動的ページの結果は再生成され、ファイルに保存され、結果が出力されます。それ以外の場合は、ステップ 5 に進みます
5. バッファ ファイルが最新の場合は、バッファ ファイルを直接出力します

これは私の処理です。バッファファイルの保存方法としては、一時ディレクトリを作成する方法と、データベースを使用して処理する方法があります。データベースを使用する場合は、データベースに生成時刻フィールドを追加し、この時刻フィールドを他のファイルの更新時刻と比較するなど、ファイルが最新であるかどうかを判断する方法も変更する必要があります。誰もが自分なりの方法を考えています。



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