Cache the minimized output also on the server
This commit is contained in:
parent
91f69858e4
commit
617de811f7
|
@ -6,10 +6,10 @@ OC_App::loadApps();
|
|||
if ($service == 'core.css'){
|
||||
$minimizer = new OC_Minimizer_CSS();
|
||||
$files = $minimizer->findFiles(OC_Util::$core_styles);
|
||||
$minimizer->output($files);
|
||||
$minimizer->output($files, $service);
|
||||
}
|
||||
else if ($service == 'core.js'){
|
||||
$minimizer = new OC_Minimizer_JS();
|
||||
$files = $minimizer->findFiles(OC_Util::$core_scripts);
|
||||
$minimizer->output($files);
|
||||
$minimizer->output($files, $service);
|
||||
}
|
||||
|
|
|
@ -26,14 +26,30 @@ abstract class OC_Minimizer
|
|||
|
||||
abstract public function minimizeFiles($files);
|
||||
|
||||
public function output($files) {
|
||||
public function output($files, $cache_key) {
|
||||
header('Content-Type: '.$this->contentType);
|
||||
OC_Response::enableCaching();
|
||||
$last_modified = $this->getLastModified($files);
|
||||
OC_Response::setLastModifiedHeader($last_modified);
|
||||
|
||||
$out = $this->minimizeFiles($files);
|
||||
OC_Response::setETagHeader(md5($out));
|
||||
$gzout = false;
|
||||
$cache = new OC_Cache_FileGlobal();
|
||||
if (!OC_Request::isNoCache() && (!defined('DEBUG') || !DEBUG)){
|
||||
$gzout = $cache->get($cache_key.'.gz');
|
||||
OC_Response::setETagHeader(md5($gzout));
|
||||
}
|
||||
|
||||
if (!$gzout) {
|
||||
$out = $this->minimizeFiles($files);
|
||||
$gzout = gzencode($out);
|
||||
$cache->set($cache_key.'.gz', $gzout);
|
||||
}
|
||||
if ($encoding = OC_Request::acceptGZip()) {
|
||||
header('Content-Encoding: '.$encoding);
|
||||
$out = $gzout;
|
||||
} else {
|
||||
$out = gzdecode($gzout);
|
||||
}
|
||||
header('Content-Length: '.strlen($out));
|
||||
echo $out;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
class OC_Request {
|
||||
static public function isNoCache() {
|
||||
if (!isset($_SERVER['HTTP_CACHE_CONTROL'])) {
|
||||
return false;
|
||||
}
|
||||
return $_SERVER['HTTP_CACHE_CONTROL'] == 'no-cache';
|
||||
}
|
||||
|
||||
static public function acceptGZip() {
|
||||
$HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"];
|
||||
if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false )
|
||||
return 'x-gzip';
|
||||
else if( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false )
|
||||
return 'gzip';
|
||||
return false;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue