ホームページ バックエンド開発 PHPチュートリアル Smarty 構成と高度なキャッシュ技術_PHP チュートリアル

Smarty 構成と高度なキャッシュ技術_PHP チュートリアル

Jul 13, 2016 pm 05:51 PM
php smarty そして ポイント 序文 それ エンジン テクノロジー はい テンプレート キャッシュ 構成 高度な

はじめに
Smarty は、ロジック コードとユーザー インターフェイスを分離する優れた PHP テンプレート エンジンです。
Smarty を学習して使用する場合、Smarty のキャッシュ属性が true に設定されている場合、そのキャッシュ テクノロジを適用しないのは大きな損失です。キャッシュタイム期間を設定すると、ユーザーの WEB リクエストはこの静的 HTML ファイルに直接変換され、バックエンド サーバーの負担が大幅に軽減されます。
ダウンロードして設定します
公式ダウンロード: Smarty ダウンロード
ダウンロード後、プロジェクトのファイル ディレクトリに解凍します。

1 require('../libs/Smarty.class.php');
2
3 $smarty = 新しい Smarty;
4
5 //$smarty->force_compile = true //強制コンパイル
; 6 $smarty->debugging = true //デバッグ
; 7 $smarty->caching = true //キャッシュを有効にする
8 $smarty->cache_lifetime = 120 //キャッシュ生存時間 (秒)
;
$smarty->cache_dir = '/cache/' //キャッシュストレージパスを設定します
;
注: ブラウズするたびにキャッシュ ファイルが変更される場合は、Smarty の Force_compile を確認してください。これにより、Smarty は呼び出されるたびにテンプレートを (再) コンパイルします。この設定は $compile_check によって制限されません。デフォルトでは無効になっています。開発やデバッグには非常に便利ですが、キャッシュが有効になっている場合は毎回キャッシュ ファイルが再生成されます。 $smarty->force_compile = false; // 強制的にコンパイルします

Smarty キャッシュテクノロジー
• グローバルキャッシュ
• 部分キャッシュ
1.メソッドを挿入します
2.ダイナミックブロック法
3.プラグインブロック方法
グローバルキャッシングテクノロジー
グローバルキャッシュとはその名のとおり、ページ全体のキャッシュファイルを生成し、キャッシュファイルの生存時間を指定し、指定時間内に再度ページ全体を閲覧するとキャッシュファイルが直接読み込まれます。
$smarty->caching = true //キャッシュを有効にする
; $smarty->cache_lifetime = 120; //キャッシュ生存時間 (秒)
;
注: テンプレートに複数のページがある場合は、キャッシュ ファイルを 1 つだけ設定する必要があります。 たとえば、ページに複数の記事があるとします。
http://website/index.php?p=1
http://website/index.php?p=2
//$_SERVER['REQUEST_URI'] メソッド
// 現在のページの URL (? 以降のすべてのパラメーターを含む) を md5 で暗号化します
$url=md5($_SERVER['REQUEST_URI']);
//キャッシュファイル名を設定します
$smarty->display('index.tpl',$url);

重要なポイント: キャッシュ テクノロジを使用する主な理由は、データベースへの読み取りと書き込みを減らすことです。そのため、キャッシュが存在するかどうかを確認するには、$smarty->isCached('index.tpl') を使用する必要があります。存在する場合は、実行します。データベースを再度操作しないでください。

if(!$smarty->isCached('index.tpl')){
エコー「ACACHE が見つかりません!」;
$sql = "SELECT * FROM テスト";
$query = mysql_query($sql); $row = mysql_fetch_row($query);
$smarty->assign("loaddatabase",$row[1]);
}


ここで別の問題が発生します。データベース内で何かを変更し、表示内容を更新したいが、キャッシュの有効期限がまだ切れていない場合、どうすればよいでしょうか。
$smarty->clearCache("index.tpl");
上記の clearCache は、データが更新されている限り、clearCache を呼び出してキャッシュをクリアすることでこの問題を解決できます。


PS: Smarty3 バージョンを使用しています。Smarty2 の場合は、「不明なメソッド 'isCached' を呼び出します。」と表示されます。$smarty->is_cached() を使用してください。
後で登場する Smarty3:registerPlugin() と Smarty2:register_block() もバージョンの問題です。

キャッシュありとなしの速度の比較を見てみましょう:
1. 初めての閲覧、キャッシュなし 合計時間 0.01421


2. 2 回目の閲覧では、合計時間 0.00308 がキャッシュされます。

ここのindex.phpには数行のコードしかありませんが、データ量が多い場合には、明らかな違いが生じます。
部分キャッシュ技術
部分キャッシュ = 部分キャッシュ、つまり、ページのキャッシュのうち、すべてのキャッシュが生成されないように、特定の機能モジュールをカスタマイズして、閲覧するたびにデータが更新されます。 たとえば、Web ページにはユーザー ステータス、Web ページ統計、広告バナーなどが表示されます。これらのデータは非常に速く更新されるため、キャッシュには適していません。このように、ローカル キャッシュは役立ちます。
部分キャッシュには 3 つの方法があります:

1.メソッドを挿入します
insert に含まれるコンテンツはキャッシュされず、テンプレートが呼び出されるたびに関数が再実行されます。
使用方法:
ここでの関数名は insert で始まる必要があり、テンプレート内の名前はそれに対応していることに注意してください。
インデックス.php

//挿入と通常の代入の違いをテストする時間を定義します
$date = date("Y-m-d H:i:s");
$smarty->assign("日付", $date);
//
を挿入 関数 insert_get_current_time($date){
日付を返します("Y-m-d H:i:s"); }

インデックス.tpl
nocache:{名前を挿入="get_current_time"}

キャッシュ: {$date}

次に、生成されたキャッシュ ファイルを確認します。テンプレートが呼び出されるたびに、insert によって関数が再実行されるという結論に達します
nocache:) ),$_smarty_tpl);?>

キャッシュ: 2012-06-04 15:46:52


この方法は簡単ですが、表示するコンテンツが大きい場合には使用できません。


2.ダイナミックブロック法
phpのカスタムブロック
インデックス.php

//スマート 3
// 関数宣言
関数smarty_block_nocache ($param,$content,$smarty)
{
$content を返します;
}

// Smarty に登録します
$smarty->registerPlugin("function","nocache", "smarty_block_nocache");

冒頭でも述べたように、Smarty3は registerPlugin を使用し、Smarty2は register_block を使用します
インデックス.tpl
{nocache}{$date}{/nocache}
次に、キャッシュ ファイルを確認して、テンプレートが呼び出されるたびに $date が再実行されると結論付けます
tpl_vars['date']->value;?>


3.プラグインブロック方法
この方法は 2 番目の方法と似ていますが、PHP のカスタム ブロックが Smarty ディレクトリの plugins フォルダーに配置される点が異なります。
Smarty/plugins ディレクトリに次の内容のファイル block.nocache.php を作成します:
関数smarty_block_nocache($param, $content, $smarty)
{
$content を返します。 }
?>
tplテンプレートでの使い方は2番目の方法と同じです


まとめ
Smarty キャッシュ テクノロジは Web サイトの速度と品質を大幅に向上させることができ、その使用方法は比較的簡単であると結論付けることができます。
最後に注意すべき点は、Smarty によって生成されたキャッシュ ファイルの拡張子は php ですが、php コードとして解析されないということです。

作者:その瞬間


http://www.bkjia.com/PHPjc/478175.html

tru​​ehttp://www.bkjia.com/PHPjc/478175.html技術記事はじめに Smarty は、論理コードとユーザー インターフェイスを分離する優れた PHP テンプレート エンジンです。 キャッシュ技術を適用せずに Smarty を学習して使用することは大きな損失です...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles