diff options
author | Andrey A.I. Sitnik <andrey@sitnik.ru> | 2011-12-23 21:29:49 +0700 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2011-12-24 09:42:34 +0100 |
commit | 7b1ac55f50bd580a8a9c6e9bfa8b178f1ab6f443 (patch) | |
tree | 5a67cd402d1fda5fd48ff030edbc22430c3bebe6 /railties | |
parent | 7c42b9321a8c7e47304f62e9cec8ad2d9019decf (diff) | |
download | rails-7b1ac55f50bd580a8a9c6e9bfa8b178f1ab6f443.tar.gz rails-7b1ac55f50bd580a8a9c6e9bfa8b178f1ab6f443.tar.bz2 rails-7b1ac55f50bd580a8a9c6e9bfa8b178f1ab6f443.zip |
Gzip files on page caching
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'railties')
-rw-r--r-- | railties/guides/source/caching_with_rails.textile | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/railties/guides/source/caching_with_rails.textile b/railties/guides/source/caching_with_rails.textile index ec9bfd4d40..0bf9ca8887 100644 --- a/railties/guides/source/caching_with_rails.textile +++ b/railties/guides/source/caching_with_rails.textile @@ -64,6 +64,28 @@ end If you want a more complicated expiration scheme, you can use cache sweepers to expire cached objects when things change. This is covered in the section on Sweepers. +By default, page caching automatically gzips file (for example, to +products.html.gz+ if user requests +/products+) to reduce size of transmitted data (web servers are typically configured to use a moderate compression ratio as a compromise, but since precompilation happens once, compression ration is maximum). + +Nginx is able to serve compressed content directly from disk by enabling +gzip_static+: + +<plain> +location / { + gzip_static on; # to serve pre-gzipped version +} +</plain> + +You can disable gzipping by setting +:gzip+ option to false (for example, if action returns image): + +<ruby> + caches_page :image, :gzip => false +</ruby> + +Or, you can set custom gzip compression level (level names are taken from +Zlib+ constants): + +<ruby> + caches_page :image, :gzip => :best_speed +</ruby> + NOTE: Page caching ignores all parameters. For example +/products?page=1+ will be written out to the filesystem as +products.html+ with no reference to the +page+ parameter. Thus, if someone requests +/products?page=2+ later, they will get the cached first page. A workaround for this limitation is to include the parameters in the page's path, e.g. +/productions/page/1+. INFO: Page caching runs in an after filter. Thus, invalid requests won't generate spurious cache entries as long as you halt them. Typically, a redirection in some before filter that checks request preconditions does the job. |