ホームページ php教程 php手册 シンプルなページバッファリングテクノロジー

シンプルなページバッファリングテクノロジー

Jun 21, 2016 am 09:04 AM
content filemtime template tmpfile

著者: limodou

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

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

実装
前述したように、これは実際の実装ではなく、実装のアイデアです。

処理の流れ:

アクセス要件に応じてバッファファイル名を生成
ファイル名が存在するかどうかを確認し、ファイルが存在しない場合は動的ページを生成し、ページを保存します。結果を同時に出力し、存在する場合は終了します。ステップ 3 を実行してファイルの変更時間をカウントし、動的ページ生成に関連するファイルの変更時間をバッファ ファイルの変更時間と比較します。他のページの変更時間がバッファ ファイルの変更時間より大きい場合、動的結果が変更される可能性があると思われる場合は、動的ページの結果を再生成し、ファイルに保存して結果を出力します。それ以外の場合は、ステップ 5
を実行してバッファ ファイルが最新であることを示し、バッファ ファイルを直接出力します
これが私が扱うことです。バッファファイルの保存方法としては、一時ディレクトリを作成する方法とデータベース処理を使用する方法があります。データベースを使用する場合は、データベースに生成時刻フィールドを追加し、この時刻フィールドを他のファイルの更新時刻と比較するなど、ファイルが最新であるかどうかを判断する方法も変更する必要があります。誰もが自分なりの方法を考えています。

私の具体的な実装例
皆さんが感覚的に理解できるように、私のホームページで実装したファイルベースの処理方法をここに示します。メイン処理コード
のみが不完全です。

------------------------------------------ ---------- ------------------------------------

1 $tmpfile=" ../tmp/".basename($REQUEST_URI);
2 $tmpfile=str_replace("?", "_", $tmpfile);
3 $tmpfile=str_replace(" &", "_" , $tmpfile);
4 if(file_exists($tmpfile))
5 {
6 $cflag=false;
7 $dtmp=filemtime($tmpfile);
8 $itmp =filemtime($incfile);
9 $cflag=$cflag | ($dtmp < $itmp);
10 $ctmp=filemtime(basename($PHP_SELF)); >11 $cflag=$ cflag | ($dtmp < $ctmp);
12 $ttmp=filemtime("template/content.ihtml");
13 $cflag=$cflag | $ttmp);
14 }
15 else
16 $cflag=true;
17
18 if(!$cflag) // 既存のファイルを使用します
19 {
20 readfile($tmpfile );
21 exit;
22 }
23
24 //新しいファイルを作成します
25 include "template.class.php3"; 🎜>27 $fp =fopen($incfile, "r");
28 $content=fread($fp, filesize($incfile));
29 fclose($fp); 🎜>31 //
32 以下でテンプレート処理を実行 $t = new Template("template", "keep");
33
34 $t->set_file("contentfile", "content) .ihtml");
35
36 $t->set_var(
37 array(
38 "content"=>$content
39 ));
40
41 $t->parse("outputcontent","contentfile");
42
43 $fp=fopen($tmpfile, "w")
44 if($fp)
45 {
46 flock($fp, 3);
47 fwrite($fp, $t->get_var("outputcontent"));
48 flock($fp, 1); >49 fclose($fp);
50 }
51 $t->p("出力内容");
-------------------------------------------------- ------------------
まず、私のディレクトリ構造を紹介します:

/---bin/ 実行プログラム ディレクトリ
| |--content.php3 ファイル表示の処理に使用するプログラム
|--template/ テンプレート ファイルを格納するディレクトリ
|---content.ihtml テンプレート ファイル
|-docs/ データ ファイル
|-tmp/ はバッファ ファイルを保存します。

content.php3 ファイルは動的ページの処理に使用されます。ユーザーは、content.php3?page=id 番号を通じてデータ ファイルを読み取ることができます。特定のメソッド
については説明しません。各データ ファイルに異なる ID 番号があることがわかっている限り、メソッド content.php3?page=id 番号
はデータ ファイルを一意に識別できます。

1 ~ 3 行目、一時ファイル名を生成します。 「?」、「&」、およびその他の文字を「_」に置き換えます。
4 行目、一時ファイル名が存在するかどうかを確認し、存在する場合は 18 ~ 22 行目を実行して終了します。
6-13行目、動的ページの生成に関連するファイル変更時刻と一時ファイルが更新されたかどうかを判断し、再生成フラグを設定します。ここで
filemtime() を使用して、最終変更時刻を取得します。
行 24 ~ 41 では、テンプレート クラスを使用して動的な結果を生成し、それらを変数に配置します。テンプレートの処理については「テンプレート、PHPLIBの処理方法」
の記事を参照してください。
行 43 ~ 50、一時ファイルを生成します。書き込みの競合を防ぐために、ファイルはここでロックされます。
51行目、結果を出力します。

これは私が対処した方法です。ご自身で変更することもできます。

バッファリングは、アクセス速度を向上させ、システム消費量を削減できる有意義なテクノロジです。ただし、さまざまな方法があり、誰もが好きなように
使用できます。





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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP 関数の紹介 - filemtime(): ファイルの最終変更時刻を取得する PHP 関数の紹介 - filemtime(): ファイルの最終変更時刻を取得する Jul 24, 2023 pm 05:41 PM

PHP 関数の紹介 - filemtime(): ファイルの最終変更時刻を取得する 概要: PHP では、filemtime() は非常に一般的に使用される関数であり、ファイルの最終変更時刻を取得するために使用されます。この関数を通じて、ファイルの最終変更タイムスタンプを取得して、ファイルの操作と処理を容易にすることができます。この記事では、filemtime() 関数の使用方法を紹介し、読者がこの関数をよりよく理解して使用できるようにコード例を示します。関数の構文: intfilemtime

Golang のテンプレート パッケージによるデータ視覚化 Golang のテンプレート パッケージによるデータ視覚化 Jul 17, 2023 am 09:01 AM

Golang のテンプレート パッケージによるデータの視覚化 ビッグ データ時代の到来により、データの視覚化は情報処理と分析の重要な手段の 1 つになりました。データの視覚化により、データを簡潔かつ直感的な方法で表示できるため、人々がデータをよりよく理解して分析できるようになります。 Golang では、Template パッケージを使用してデータ視覚化機能を実装できます。この記事では、Golang の Template パッケージを使用してデータ視覚化を実現する方法を紹介し、コード例を示します。ゴランテム

Golang と Template パッケージ: パーソナライズされたユーザー インターフェイスの作成 Golang と Template パッケージ: パーソナライズされたユーザー インターフェイスの作成 Jul 18, 2023 am 10:27 AM

Golang とテンプレート パッケージ: パーソナライズされたユーザー インターフェイスを作成する 最新のソフトウェア開発では、ユーザー インターフェイスは多くの場合、ユーザーがソフトウェアと対話するための最も直接的な方法です。使いやすく美しいユーザー インターフェイスを提供するために、開発者はユーザー インターフェイスを作成およびカスタマイズするための柔軟なツールを必要とします。 Golang では、開発者は Template パッケージを使用してこの目標を達成できます。この記事では、Golang および Template パッケージの基本的な使用法を紹介し、コード例を通じてパーソナライズされたユーザー インターフェイスを作成する方法を示します。

PHP 関数「filemtime」を使用してファイルの変更時刻を返す PHP 関数「filemtime」を使用してファイルの変更時刻を返す Jul 24, 2023 am 10:01 AM

PHP 関数「filemtime」を使用すると、ファイルの最終変更時刻を取得できます。使い方は非常に簡単で、ファイル パスをパラメータとして渡すだけで、関数はファイルの最終変更時刻を示すタイムスタンプを返します。次に、この関数の使い方とコード例を紹介します。 PHP では、「filemtime」関数を次のように使用できます: $file_path='path/to/file.txt';//ファイル パス

golangの「unknown: template.Must」エラーを解決するにはどうすればよいですか? golangの「unknown: template.Must」エラーを解決するにはどうすればよいですか? Jun 24, 2023 pm 09:00 PM

Go 言語は、簡潔な構文、効率的なパフォーマンス、簡単な開発により、ますます人気が高まっているプログラミング言語です。 Go言語には「text/template」という強力なテンプレートエンジンが用意されていますが、これを使用すると「unknown:template.Must」というエラーが発生する場合がありますので、このエラーを解決する方法を以下に示します。正しいパッケージをインポートしてください。「text/template」テンプレート エンジンを使用する場合は、「text/template」をインポートする必要があります

PHP関数の紹介: is_file()関数 PHP関数の紹介: is_file()関数 Nov 04, 2023 am 09:11 AM

PHP 関数の紹介: is_file() 関数 PHP プログラミングにおいて、is_file() 関数は非常に便利な関数です。これは、パスまたはファイルが存在し、通常のファイルであるかどうかを判断するために使用されます。この記事では、is_file() 関数の使用方法を紹介し、具体的なコード例をいくつか示します。まず、is_file() 関数の構文を見てみましょう: boolis_file(string$filename)is_

Golang と Template パッケージ: 強力なフロントエンド開発ツールボックスの構築 Golang と Template パッケージ: 強力なフロントエンド開発ツールボックスの構築 Jul 19, 2023 pm 02:43 PM

Golang と Template パッケージ: 強力なフロントエンド開発ツールボックスの構築 今日のソフトウェア開発では、プロジェクト全体を通じてフロントエンド開発の重要性がますます高まっています。エレガントで信頼性の高いフロントエンド開発ソリューションを提供するために、Golang 言語とその組み込みテンプレート パッケージを使用できます。この記事では、Golang と Template パッケージを使用して強力なフロントエンド開発ツールボックスを構築する方法を紹介します。 1. Golang: 効率的で使いやすいプログラミング言語 Golang は現代的な言語です。

Golang のテンプレート パッケージ: 高パフォーマンスの Web アプリケーションの開発 Golang のテンプレート パッケージ: 高パフォーマンスの Web アプリケーションの開発 Jul 17, 2023 pm 05:29 PM

Golang のテンプレート パッケージ: 高パフォーマンスの Web アプリケーションの開発 はじめに: Web 開発において、テンプレート エンジンは非常に重要なコンポーネントです。これにより、開発者は動的データと静的 HTML テンプレートを組み合わせて、最終的な Web コンテンツを生成できます。 Golang の Template パッケージは、テンプレートを操作するための効率的かつ強力な方法を提供します。この記事では、Golang の Template パッケージの基本的な使用法を紹介し、いくつかのコード例を通じて、それを使用して高パフォーマンスの Web アプリケーションを開発する方法を示します。

See all articles