Get Smarty

Donate

Donate Bitcoin Bitcoin
Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Check reviews of PHP Web Hosting, compatible with Smarty Templates

Largest classified with thousands of ads at Shoppok

Buy cheap eyeglasses from Cheapglasses123.com and save up to 80%.

Buy wedding dresses on SiteSteer.com - Best Online Wedding Dress Store

Candy Crush Cheats

Tired of playing games? Visit the Game Supply to Sell World of Warcraft Accounts.

Buy prescription glasses from www.australiaglasses.com and save.

Cheap Glasses Now On Sale at GlassesPeople.com. Starts At $7.95.

Where to buy discount wedding dresses and cheap smart dresses free shipping - Weddingdresstrend.com

Caches multiples pour une seule page

Vous pouvez avoir plusieurs fichiers de caches pour un même appel aux fonctions display() ou fetch(). Imaginons qu'un appel a display('index.tpl') puisse avoir plusieurs résultats, en fonction de certaines conditions, et que vous vouliez des fichiers de cache séparés pour chacun d'eux. Vous pouvez faire celà en passant un identifiant de cache ($cache_id) en deuxiéme paramètre à l'appel de fonction.

Example 14.6. Passage d'un $cache_id à display()


<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

$my_cache_id = $_GET['article_id'];

$smarty->display('index.tpl',$my_cache_id);
?>

  

Nous passons ci-dessus la variable $my_cache_id à display() comme identifiant de cache. Pour chaque valeur distincte de $my_cache_id, un fichier de cache distinct va être créé. Dans cet exemple, article_id a été passé dans l'URL et est utilisé en tant qu'identifiant de cache.

Note technique

Soyez prudent en passant des valeurs depuis un client (navigateur Web) vers Smarty (ou vers n'importe quelle application PHP). Bien que l'exemple ci-dessus consistant à utiliser article_id depuis l'URL puisse paraetre commode, le résultat peut s'avérer mauvais. L'identifiant de cache est utilisé pour créer un répertoire sur le système de fichiers, donc si l'utilisateur décide de donner une trés grande valeur à article_id ou d'écrire un script qui envoie des article_id de façon aléatoire, celà pourra causer des problémes coté serveur. Assurez-vous de bien tester toute donnée passée en paramètre avant de l'utiliser. Dans cet exemple, peut-être savez-vous que article_id a une longueur de 10 caractéres, est exclusivement composé de caractéres alph-numériques et doit avoir une valeur contenue dans la base de données. Vérifiez-le bien !

Assurez-vous de bien passer le même identifiant aux fonctions is_cached() et clear_cache().

Example 14.7. Passer un cache_id a is_cached()


<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

$my_cache_id = $_GET['article_id'];

if(!$smarty->is_cached('index.tpl',$my_cache_id)) {
  // pas de fichier de cache dispo, on assigne donc les variables
  $contents = get_database_contents();
  $smarty->assign($contents);
}

$smarty->display('index.tpl',$my_cache_id);
?>

  

Vous pouvez effacer tous les fichiers de cache pour un identifiant de cache particulier en passant NULL en tant que premier paramètre à clear_cache().

Example 14.8. Effacement de tous les fichiers de cache pour un identifiant de cache particulier


<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

// efface tous les fichiers de cache avec "sports" comme identifiant
$smarty->clear_cache(null,'sports');

$smarty->display('index.tpl','sports');
?>

  

De cette manière, vous pouvez "grouper" vos fichiers de cache en leur donnant le même identifiant.

Comments
No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 15 plus 18? (Are you human?)

Sponsors [info]

UK Web Hosting @webhost.uk.net
Best Web Hosting @rshosting.com
Web Hosting UK @webhostinguk.com
Unlimited Web Hosting @infrenion.com
App Entwicklung @morphodo.com
Buy from China @dhgate.com
dissertationteam.com
Buy Web Hosting @buy-hosting.net
WordPress Hosting Hub @wphostinghub.net