107 lines
2.8 KiB
Plaintext
107 lines
2.8 KiB
Plaintext
= sfSuperCache plugin =
|
|
|
|
The `sfSuperCachePlugin` writes your page cache somewhere under your root directory to allow your web server to serve them as fast as possible.
|
|
|
|
It supports caching by domain name.
|
|
|
|
Please read the limitations at the end.
|
|
|
|
== Installation ==
|
|
|
|
* Install the plugin
|
|
|
|
{{{
|
|
symfony plugin-install http://plugins.symfony-project.com/sfSuperCachePlugin
|
|
}}}
|
|
|
|
* Choose a directory to store the cache under your web root
|
|
|
|
{{{
|
|
mkdir web/cache
|
|
chown apache.apache web/cache
|
|
}}}
|
|
|
|
* Add `sfSuperCacheFilter` to your filters
|
|
|
|
{{{
|
|
supercache:
|
|
class: sfSuperCacheFilter
|
|
param:
|
|
cache_dir: cache
|
|
}}}
|
|
|
|
* If your content doesn't change based on the hostname,
|
|
you can switch the `cache_host` parameter to false:
|
|
|
|
{{{
|
|
supercache:
|
|
class: sfSuperCacheFilter
|
|
param:
|
|
cache_dir: cache
|
|
with_host: false
|
|
}}}
|
|
|
|
* Replace the 2 following lines in `.htaccess`
|
|
|
|
{{{
|
|
RewriteRule ^$ index.html [QSA]
|
|
RewriteRule ^([^.]+)$ $1.html [QSA]
|
|
}}}
|
|
|
|
by
|
|
|
|
{{{
|
|
RewriteCond %{REQUEST_METHOD} GET
|
|
RewriteCond %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}/%{REQUEST_URI}index.html.php -f
|
|
RewriteRule ^(.*) cache/%{HTTP_HOST}/$1index.html.php [L]
|
|
|
|
RewriteCond %{REQUEST_METHOD} GET
|
|
RewriteCond %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}/%{REQUEST_URI}.html.php -f
|
|
RewriteRule ^(.*) cache/%{HTTP_HOST}/$1.html.php [L]
|
|
|
|
RewriteCond %{REQUEST_METHOD} GET
|
|
RewriteCond %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}/%{REQUEST_URI}.php -f
|
|
RewriteRule ^(.*) cache/%{HTTP_HOST}/$1.php [L]
|
|
}}}
|
|
|
|
Don't forget to change the "cache" dir name with the one you chose in `filters.yml`.
|
|
|
|
If you set `with_host` to `false`, also remove `%{HTTP_HOST}/` from the rules:
|
|
|
|
{{{
|
|
RewriteCond %{REQUEST_METHOD} GET
|
|
RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_URI}index.html.php -f
|
|
RewriteRule ^(.*) cache/$1index.html.php [L]
|
|
|
|
RewriteCond %{REQUEST_METHOD} GET
|
|
RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_URI}.html.php -f
|
|
RewriteRule ^(.*) cache/$1.html.php [L]
|
|
|
|
RewriteCond %{REQUEST_METHOD} GET
|
|
RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_URI}.php -f
|
|
RewriteRule ^(.*) cache/$1.php [L]
|
|
}}}
|
|
|
|
* Clear you cache
|
|
|
|
{{{
|
|
symfony cc
|
|
}}}
|
|
|
|
* You're done.
|
|
|
|
== Known limitations ==
|
|
|
|
* your page must ends with the right extension: .html, .xml, ... Because Apache will server these pages, it must be able to guess the content type
|
|
* symfony cc won't clear the "super" cache. It is important to clear both cache at the same time.
|
|
* no vary support
|
|
|
|
== Changelog ==
|
|
|
|
=== 2008-03-07 | 1.0.5 ===
|
|
|
|
* francois: Added support for cache lifetime (based on `cache.yml` settings)
|
|
'''BC break''': the signature of cache files has changed. They now end with `.php`
|
|
|
|
=== 2007-10-10 | 1.0.4 ===
|