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

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

Jul 21, 2016 pm 03:19 PM
phpsmartyそしてポイント共有序文それエンジンテクノロジーはいテンプレートキャッシュ構成高度な

はじめに

Smarty は、論理コードとユーザー インターフェイスを分離する優れた PHP テンプレート エンジンです。

Smarty のキャッシュ属性を true に設定すると、キャッシュ テクノロジーを適用せずに Smarty を学習して使用することは大きな損失となります。 Smarty では、ユーザーの WEB リクエストはこの静的 HTML ファイルに直接変換されます。これは、静的 HTML ファイルを呼び出すのと同等であり、バックエンド サーバーの負担を大幅に軽減します。

ダウンロードと設定

公式ダウンロード: Smarty ダウンロード

ダウンロード後、プロジェクトのファイル ディレクトリに解凍します。

コードをコピーします コードは次のとおりです:

require('../libs/Smarty.class.php');
$smarty = new Smarty
//$smarty-> force_compile = true; //強制コンパイル
$smarty->debugging = true; //デバッグ
$smarty->cache_lifetime = 120; (秒)

$smarty->cache_dir = MY_SMARTY_DIR . '/cache/' ; //キャッシュ ストレージ パスを設定します

注: キャッシュ ファイルがブラウズするたびに変更される場合は、Smarty の Force_compile を参照してください。 Smarty が呼び出されるたびにテンプレートが (再) コンパイルされます。この設定は $compile_check によって制限されません。デフォルトでは無効になっています。開発やデバッグには非常に便利ですが、キャッシュが有効になっている場合は、毎回キャッシュ ファイルが再生成されます。

Smarty キャッシュ技術


グローバル キャッシュローカル キャッシュ
挿入メソッド
ダイナミック ブロックメソッド
プラグイン ブロックメソッド


グローバル キャッシュ テクノロジ


その名前が示すように、グローバル キャッシュは、ページ全体を参照し、キャッシュ ファイルの生存時間を指定すると、指定した時間内にページ全体を再度閲覧すると、キャッシュ ファイルが直接読み取られます。

コードをコピーします
コードは次のとおりです: $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')){ echo "ACACHE NO FOUND!";
$sql = "SELECT * FROM テスト ";
$query = mysql_query($sql);
$row = mysql_fetch_row($query);
$smarty->assign("loaddatabase",$row[1]);
}


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

追記: Smarty3 バージョンを使用しています。このバージョンでは多くのメソッドの名前が変更されています。Smarty2 の場合、「$smarty->is_cached() を使用してください。」と表示されます。 。
後で登場する Smarty3:registerPlugin() と Smarty2:register_block() もバージョンの問題です。

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

2. 2 回目の閲覧では、合計時間 0.00308
が存在します。

ここでは、index.php のコードは数行しかありませんが、データ量が多い場合は、明らかな違いが生じます。

部分キャッシュ技術

部分キャッシュ = ページのキャッシュです。すべてのキャッシュが生成されるわけではありません。特定の機能モジュールをカスタマイズして、閲覧するたびにデータが更新されます。

例: Web ページ ユーザー ステータス、Web ページ統計、広告バナーなどを表示します。これらのデータは非常に速く更新されるため、キャッシュには適していません。このように、ローカル キャッシュは便利です。

ローカル キャッシュには 3 つの方法があります:

1. Insert メソッド

insert に含まれるコンテンツはキャッシュされず、テンプレートが呼び出されるたびに関数が再実行されます。ここでの関数名に注意してください。関数名は insert で始まる必要があり、テンプレート内の名前はそれに対応しています。

index.php



コードをコピーします
コードは次のとおりです: //insertと通常のassignの違いをテストする時間を定義します$date = date("Y-m-d H:i:s ");
$ Smarty->assign("date", $date);
//insert
function insert_get_current_time($date){
return date("Y-m-d H:i:s");
}


Index.tpl


コードをコピーします
コードは次のとおりです: nocache:{insert name="get_current_time"} cache: {$date}
[code]
次に、生成されたキャッシュ ファイルを確認します。 : insert が毎回テンプレートを呼び出すという結論を導き出します 関数が再実行されます


nocache:),$_smarty_tpl);?>
cache: 2012-06- 04 15:46:52



コードをコピー
コードは次のとおりです: この方法は簡単ですが、表示するコンテンツが大きい場合は使用しないでください。
2. 動的ブロックメソッド

phpのカスタムブロック
index.php
[code]
//smarty 3
//関数宣言
function Smarty_block_nocache ($param,$content,$smarty)
{
return $content ;
}
// Smarty に登録します
$smarty->registerPlugin("function","nocache", "smarty_block_nocache");


冒頭で述べたように、Smarty3 は registerPlugin を使用し、Smarty2 は register_block を使用します

index .tpl

{nocache}{$date}{/nocache}
次に、キャッシュ ファイルを確認して、テンプレートが呼び出されるたびに $date が再実行されると結論付けます
[/code]
tpl_vars['date']->value;?>



コードをコピーします
コードは次のとおりです: 3. このメソッドは次のようなものです。 2 つ目は、php を追加するだけです。カスタム ブロックは、smarty ディレクトリの plugins フォルダーに配置されます。
次の内容を含むファイル block.nocache.php を Smarty/plugins ディレクトリに作成します。
function Smarty_block_nocache($param, $content, $smarty)
{
return $content;
?>
[code]
tpl テンプレートでの使用方法は 2 番目のメソッドと同じです


Smarty キャッシュ テクノロジーは Web サイトの速度と品質を大幅に向上させることができ、その使用方法は比較的簡単であると結論付けることができます。

最後の注意点は、Smarty によって生成されたキャッシュ ファイルの拡張子は php ですが、php コードとして解析されないということです。

Author: That Moment

http://www.bkjia.com/PHPjc/325393.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/325393.html技術記事はじめに Smarty は、論理コードとユーザー インターフェイスを分離する優れた PHP テンプレート エンジンです。 キャッシュ技術を適用せずに Smarty を学習して使用することは大きな損失です...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPアプリケーションをより速くする方法PHPアプリケーションをより速くする方法May 12, 2025 am 12:12 AM

tomakephpapplicationsfaster、followthesesteps:1)useopcodecachinglikeopcacheTostoredscriptbytecode.2)最小化abasequeriesecachingingindexing.3)leveragephp7機能forbettercodeefficiency.4)

PHP依存性インジェクション:コードのテスト可能性を改善しますPHP依存性インジェクション:コードのテスト可能性を改善しますMay 12, 2025 am 12:03 AM

依存性注入(DI)は、明示的に推移的な依存関係によりPHPコードのテスト可能性を大幅に改善します。 1)DI分離クラスと特定の実装により、テストとメンテナンスが柔軟になります。 2)3つのタイプのうち、コンストラクターは、状態を一貫性に保つために明示的な式依存性を注入します。 3)DIコンテナを使用して複雑な依存関係を管理し、コードの品質と開発効率を向上させます。

PHPパフォーマンスの最適化:データベースクエリの最適化PHPパフォーマンスの最適化:データベースクエリの最適化May 12, 2025 am 12:02 AM

DatabaseQueryoptimizationInpholvesseveralstrategESTOEnhancePerformance.1)selectonlynlynlyndorycolumnStoredatedataTransfer.2)useindexingtospeedupdataretrieval.3)revenmecrycachingtostoreres sultsoffrequent queries.4)

簡単なガイド:PHPスクリプトで電子メールを送信します簡単なガイド:PHPスクリプトで電子メールを送信しますMay 12, 2025 am 12:02 AM

phpisusededemingemailsduetoitsbuilt-inmail()functionandsupportiveLibrarieslikephpmailerandswiftmailer.1)usethemail()functionforbasicemails、butithaslimitations.2)emploadforadvancedfeatureSlikelikelivableabableabuses.3)雇用

PHPパフォーマンス:ボトルネックの識別と修正PHPパフォーマンス:ボトルネックの識別と修正May 11, 2025 am 12:13 AM

PHPパフォーマンスボトルネックは、次の手順で解決できます。1)パフォーマンス分析にXdebugまたはBlackfireを使用して問題を見つける。 2)データベースクエリを最適化し、APCUなどのキャッシュを使用します。 3)array_filterなどの効率的な関数を使用して、配列操作を最適化します。 4)bytecodeキャッシュ用のopcacheを構成します。 5)HTTP要求の削減や写真の最適化など、フロントエンドを最適化します。 6)パフォーマンスを継続的に監視および最適化します。これらの方法により、PHPアプリケーションのパフォーマンスを大幅に改善できます。

PHPの依存関係注射:簡単な要約PHPの依存関係注射:簡単な要約May 11, 2025 am 12:09 AM

依存関係(di)inphpisadesignpatternativats anducesclassodulencies、拡張測定性、テスト可能性、および維持可能性。

PHPパフォーマンスの向上:キャッシュ戦略と技術PHPパフォーマンスの向上:キャッシュ戦略と技術May 11, 2025 am 12:08 AM

cachingemprovesppperformancebystring of computationsorquickretrieval、還元装置の削減は、reducingerloadendenhancersponseTimes.efcectivestrategiesInclude:1)opcodecaching、compiledphpscriptsinmemorytoskipcompilation;

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版

SublimeText3 Mac版

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール