mirror of
https://github.com/smarty-php/smarty.git
synced 2025-07-31 00:17:15 +02:00
Feature/add docs (#689)
* Add converted docs repo * Set theme jekyll-theme-minimal * Removed BC docs, added TOC * Added TOCs, rewrote most important links in documentation. Linked README to new Github Pages site * some link fixes
This commit is contained in:
153
docs/programmers/caching/caching-setting-up.md
Normal file
153
docs/programmers/caching/caching-setting-up.md
Normal file
@ -0,0 +1,153 @@
|
||||
Setting Up Caching {#caching.setting.up}
|
||||
==================
|
||||
|
||||
The first thing to do is enable caching by setting
|
||||
[`$caching`](#variable.caching) to one of
|
||||
`Smarty::CACHING_LIFETIME_CURRENT` or `Smarty::CACHING_LIFETIME_SAVED`.
|
||||
|
||||
|
||||
<?php
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;
|
||||
|
||||
// uses the value of $smarty->cacheLifetime() to determine
|
||||
// the number of seconds a cache is good for
|
||||
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
|
||||
|
||||
$smarty->display('index.tpl');
|
||||
?>
|
||||
|
||||
|
||||
|
||||
With caching enabled, the function call to `display('index.tpl')` will
|
||||
render the template as usual, but also saves a copy of its output to a
|
||||
file (a cached copy) in the [`$cache_dir`](#variable.cache.dir). On the
|
||||
next call to `display('index.tpl')`, the cached copy will be used
|
||||
instead of rendering the template again.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> The files in the [`$cache_dir`](#variable.cache.dir) are named similar
|
||||
> to the template name. Although they end in the `.php` extension, they
|
||||
> are not intended to be directly executable. Do not edit these files!
|
||||
|
||||
Each cached page has a limited lifetime determined by
|
||||
[`$cache_lifetime`](#variable.cache.lifetime). The default value is 3600
|
||||
seconds, or one hour. After that time expires, the cache is regenerated.
|
||||
It is possible to give individual caches their own expiration time by
|
||||
setting [`$caching`](#variable.caching) to
|
||||
`Smarty::CACHING_LIFETIME_SAVED`. See
|
||||
[`$cache_lifetime`](#variable.cache.lifetime) for more details.
|
||||
|
||||
|
||||
<?php
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;
|
||||
|
||||
// retain current cache lifetime for each specific display call
|
||||
$smarty->setCaching(Smarty::CACHING_LIFETIME_SAVED);
|
||||
|
||||
// set the cache_lifetime for index.tpl to 5 minutes
|
||||
$smarty->setCacheLifetime(300);
|
||||
$smarty->display('index.tpl');
|
||||
|
||||
// set the cache_lifetime for home.tpl to 1 hour
|
||||
$smarty->setCacheLifetime(3600);
|
||||
$smarty->display('home.tpl');
|
||||
|
||||
// NOTE: the following $cache_lifetime setting will not work when $caching
|
||||
// is set to Smarty::CACHING_LIFETIME_SAVED.
|
||||
// The cache lifetime for home.tpl has already been set
|
||||
// to 1 hour, and will no longer respect the value of $cache_lifetime.
|
||||
// The home.tpl cache will still expire after 1 hour.
|
||||
$smarty->setCacheLifetime(30); // 30 seconds
|
||||
$smarty->display('home.tpl');
|
||||
?>
|
||||
|
||||
|
||||
|
||||
If [`$compile_check`](#variable.compile.check) is enabled (default),
|
||||
every template file and config file that is involved with the cache file
|
||||
is checked for modification. If any of the files have been modified
|
||||
since the cache was generated, the cache is immediately regenerated.
|
||||
This is a computational overhead, so for optimum performance set
|
||||
[`$compile_check`](#variable.compile.check) to FALSE.
|
||||
|
||||
|
||||
<?php
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;
|
||||
|
||||
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
|
||||
$smarty->setCompileCheck(false);
|
||||
|
||||
$smarty->display('index.tpl');
|
||||
?>
|
||||
|
||||
|
||||
|
||||
If [`$force_compile`](#variable.force.compile) is enabled, the cache
|
||||
files will always be regenerated. This effectively disables caching,
|
||||
however this also seriously degrades performance.
|
||||
[`$force_compile`](#variable.force.compile) is meant to be used for
|
||||
[debugging](#chapter.debugging.console) purposes. The appropriate way to
|
||||
disable caching is to set [`$caching`](#variable.caching) to
|
||||
Smarty::CACHING\_OFF.
|
||||
|
||||
The [`isCached()`](#api.is.cached) function can be used to test if a
|
||||
template has a valid cache or not. If you have a cached template that
|
||||
requires something like a database fetch, you can use this to skip that
|
||||
process.
|
||||
|
||||
|
||||
<?php
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;
|
||||
|
||||
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
|
||||
|
||||
if(!$smarty->isCached('index.tpl')) {
|
||||
// No cache available, do variable assignments here.
|
||||
$contents = get_database_contents();
|
||||
$smarty->assign($contents);
|
||||
}
|
||||
|
||||
$smarty->display('index.tpl');
|
||||
?>
|
||||
|
||||
|
||||
|
||||
You can keep parts of a page dynamic (disable caching) with the
|
||||
[`{nocache}{/nocache}`](#language.function.nocache) block function, the
|
||||
[`{insert}`](#language.function.insert) function, or by using the
|
||||
`nocache` parameter for most template functions.
|
||||
|
||||
Let\'s say the whole page can be cached except for a banner that is
|
||||
displayed down the side of the page. By using the
|
||||
[`{insert}`](#language.function.insert) function for the banner, you can
|
||||
keep this element dynamic within the cached content. See the
|
||||
documentation on [`{insert}`](#language.function.insert) for more
|
||||
details and examples.
|
||||
|
||||
You can clear all the cache files with the
|
||||
[`clearAllCache()`](#api.clear.all.cache) function, or individual cache
|
||||
files [and groups](#caching.groups) with the
|
||||
[`clearCache()`](#api.clear.cache) function.
|
||||
|
||||
|
||||
<?php
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;
|
||||
|
||||
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
|
||||
|
||||
// clear only cache for index.tpl
|
||||
$smarty->clearCache('index.tpl');
|
||||
|
||||
// clear out all cache files
|
||||
$smarty->clearAllCache();
|
||||
|
||||
$smarty->display('index.tpl');
|
||||
?>
|
||||
|
||||
|
Reference in New Issue
Block a user