1. はじめに
速度の点では、静的ページは php などの動的ページよりもはるかに高速です。全体的な管理は変更や編集、閲覧権限の制限など比較的面倒ですが、開発したニュースリリースシステムなど頻繁に利用する一部のファイルについては、事前に多くのユーザーにデータベースを閲覧してほしくない場合があります。結果の表示は、一方ではサーバーのリソースを消費し、他方ではブラウザの貴重な応答時間を多く消費するため、現在多くの Web サイトでは「静的ページ」アプローチが使用されています。このテクノロジーを使用し、通常は管理者によって管理されます。バックグラウンド制御、直接表示用の HTML の生成、CSS で表示を制御する xhtml の使用、または xslt で表示用の XML の生成を行います。 HTML の生成方法について簡単に説明します
2. 予備知識
テンプレート テクノロジー:
[PHP] テンプレート エンジン Smarty の詳細な紹介--2005-12-31
[PHP] Smarty テクノロジーを使用した構成について説明します。 --2006-01-04
キャッシュ技術:
変更されない情報など、表示を高速化するために変更可能な情報をキャッシュに入れることは非常に価値があり、一般的には理解されています。サーバー側に保存される情報はサーバーとともに保存されます。たとえば、5 分に 1 回更新する場合は、最後の更新時刻を記録することができます。時刻を確認し、現在の時刻と比較します。それ以外の場合は、キャッシュされたデータを直接読み取ります。もちろん、キャッシュは 1 回だけアクティブ化する必要があります。
ob_start() 関数: 出力バッファを開きます。
関数形式 void ob_start(void)
説明: バッファがアクティブ化されると、PHP プログラムからのファイル以外のすべてのヘッダ情報は送信されませんが、内部バッファに保存されます。バッファの内容を出力するには、ob_end_flush() または flash() を使用してバッファの内容を出力します。
フラッシュ: バッファーと出力の内容を更新します。
関数形式: flash()
説明: この関数は頻繁に使用され、非常に効率的です。
ob_get_contents: 内部バッファの内容を返します。
関数の形式: string ob_get_contents(void)
説明: この関数は、出力バッファがアクティブ化されていない場合、現在のバッファの内容を返します。
ob_get_length: 内部バッファの長さを返します。
関数の形式: int ob_get_length(void)
説明: この関数は、ob_get_contents と同様に、現在のバッファーの長さを返します。出力バッファーがアクティブ化されていない場合は、FALSE を返します。
ob_end_clean: 内部バッファーの内容を削除して閉じます。 it 内部バッファ
関数形式: void ob_end_clean(void)
説明: この関数は内部バッファの内容を出力せずに削除します
ob_end_flush: 内部バッファの内容をブラウザに送信し、出力バッファをクローズします
関数形式: void ob_end_flush(void)
説明: この関数は出力バッファーの内容 (存在する場合) を送信します
ob_implicit_flush: 絶対フラッシュをオンまたはオフにします
関数形式: void ob_implicit_flush ([int flag])
説明: デフォルトはオフですバッファ、絶対出力をオンにした後、各スクリプト出力はブラウザに直接送信され、flush() を呼び出す必要がなくなりました。
ファイルの書き込み:
int fwrite ( resource handle, string string [, int length] )
fwrite() Write文字列の内容をファイル ポインタ ハンドルに渡します。 length を指定した場合、length バイトが書き込まれたとき、または文字列が書き込まれたときのいずれかが先に発生した時点で書き込みが停止します。
fwrite() は書き込まれた文字数を返すか、エラーが発生した場合は FALSE を返します。
関連参考公式サイト: ファイルリファレンス
3. 解決策
アイデア: ob_start バッファーをオンにし、データが呼び出されたときに ob_get_contents を取得し、静的ページを生成し、ob_end_clean でバッファーをクリアします。例 (php+mysql の組み合わせ):
データベースの作成:
次のようにコードをコピーします:
Create TABLE `bihtml` (
`id` int(11) NOT NULL auto_increment,
`szdtitle` varchar(16) NOT NULL、
` szdcontent` テキスト NOT NULL、
主キー (`id`)
) TYPE
現在の ID を取得してテンプレートをインポートします:
次のようにコードをコピーします:
ob_start();
$id=_POST['id']
if(!isset($id)&is_integer($id))
{
@$db=new mysqli('localhost' , 'root','admin','bihtml');
$result=$db->fetch_one_array("szd_bi where id='$id'");
if(!emptyempty($result))
{
$tmp->assign(array(
"Szdtitle",htmlspecialchars($result['titles']),
"Szdcontent",$result['titles']));
}
$tpl-> ; display('default_1.tpl');
$this_my_f= ob_get_contents(); //ここにキー
$filename = "$id.html"
if(tohtmlfile_cjjer($this_my_f))
echo "$filename を正常に生成しました";
else
echo "識別情報を生成";
}
}
function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content) として記述します
{
if ( is_file ($file_cjjer_name)){
@unlink ($file_cjjer_name)
}
$cjjer_handle = fopen ($file_cjjer_name)){
return false; ( !fwrite ($cjjer_handle,$file_cjjer_content)){
return false;
fclose ($cjjer_handle) //ポインタを閉じる
return $file_cjjer_name; 注意事項
1: 通常、管理者は次のことを推奨します。データの追加 静的ページを生成するときは、生成されたファイルのランキングとパスを記録することを検討できます。
2: PHP は主に ob_starts() と ob_get_contents を使用します。これは、静的ページを生成するときに非常に便利です。 もちろん、データベースを呼び出すことも検討できます。テンプレート内の変数を直接置き換えることも可能です
3: メインのテンプレートには Smarty または phplib を使用することが可能です
上記の記事の内容が皆様のお役に立てれば幸いです。その他の関連記事については、PHP 中国語 Web サイト (m.sbmmt.com) にご注目ください。