diff options
author | Bharat Mediratta <bharat@menalto.com> | 2009-06-29 21:38:04 -0700 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2009-06-29 21:38:04 -0700 |
commit | 980c589e3d674b31a2ee734e2767b6460edfc4da (patch) | |
tree | acc4e8dab7f2c6aeee3f969a4f24b255aaa47d13 /modules | |
parent | 6e80330e19ea8385da35b170f508556cfadf0340 (diff) |
Fix a few more issues
1) Don't use $_SERVER, use Input::instance()->server(). This fixes the problem
that when you use a browser that doesn't pass in an Accept-Encoding, we'd
barf on a missing array key
2) Don't bother looking up the _gz key if we don't have gzencode, because we
probably didn't store one.
3) Only emit the gzip Content-Encoding header if we're actually sending back
gzipped data.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/gallery/controllers/combined.php | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/modules/gallery/controllers/combined.php b/modules/gallery/controllers/combined.php index 9df74638..58ed85d0 100644 --- a/modules/gallery/controllers/combined.php +++ b/modules/gallery/controllers/combined.php @@ -40,8 +40,10 @@ class Combined_Controller extends Controller { * @param string the key (typically an md5 sum) */ private function _emit($type, $key) { + $input = Input::instance(); + // Our data is immutable, so if they already have a copy then it needs no updating. - if (!empty($_SERVER["HTTP_IF_MODIFIED_SINCE"])) { + if ($input->server("HTTP_IF_MODIFIED_SINCE")) { header('HTTP/1.0 304 Not Modified'); return; } @@ -54,23 +56,20 @@ class Combined_Controller extends Controller { Session::abort_save(); $cache = Cache::instance(); - if (strpos($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip") !== false ) { - $content = $cache->get("{$key}_gz"); - } - - if (!$content) { + $use_gzip = function_exists("gzencode") && + (strpos($input->server("HTTP_ACCEPT_ENCODING"), "gzip") !== false); + if ($use_gzip && $content = $cache->get("{$key}_gz")) { + header("Content-Encoding: gzip"); + header("Cache-Control: public"); + } else { + // Fall back to non-gzipped if we have to $content = $cache->get($key); } - if (!$content) { + if (empty($content)) { Kohana::show_404(); } - if (strpos($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip") !== false) { - header("Content-Encoding: gzip"); - header("Cache-Control: public"); - } - // $type is either 'javascript' or 'css' header("Content-Type: text/$type; charset=UTF-8"); header("Expires: Tue, 19 Jan 2038 00:00:00 GMT"); |