1
0
mirror of https://github.com/mrclay/minify.git synced 2025-08-11 00:24:11 +02:00

option changed to "setExpires"

default missing minifier is none (no minification performed)
This commit is contained in:
Steve Clay
2008-02-29 22:18:16 +00:00
parent ca0a4cd7cf
commit 023066ad0a
6 changed files with 29 additions and 39 deletions

6
README
View File

@@ -30,8 +30,8 @@ TESTING
MINIFY OVERVIEW
Minify is an HTTP content server. It combines sources of content
(usually files), compresses the result and serves it with appropriate
Minify is an HTTP content server. It compresses sources of content
(usually files), combines the result and serves it with appropriate
HTTP headers. These headers can usually allow clients to perform
conditional GETs (serving content only when clients do not have a valid
cache) or tell clients to cache the file until a given date/time.
@@ -57,7 +57,7 @@ Minify options (optional). Eg.:
Minify::serve(
'Files'
,array('/path/to/file1.js', '/path/to/file2.js')
,array('cacheUntil' => (time() + 86400 * 365))
,array('setExpires' => (time() + 86400 * 365))
);
The above creates an instance of Minify_Controller_Files, passing the

View File

@@ -80,13 +80,13 @@ class HTTP_ConditionalGet {
? 'public'
: 'private';
// allow far-expires header
if (isset($spec['cacheUntil'])) {
if (is_numeric($spec['cacheUntil'])) {
$spec['cacheUntil'] = self::gmtdate($spec['cacheUntil']);
if (isset($spec['setExpires'])) {
if (is_numeric($spec['setExpires'])) {
$spec['setExpires'] = self::gmtdate($spec['setExpires']);
}
$this->headers = array(
'Cache-Control' => $scope
,'Expires' => $spec['cacheUntil']
,'Expires' => $spec['setExpires']
);
$this->cacheIsValid = false;
return;

View File

@@ -4,14 +4,14 @@ require '../../ConditionalGet.php';
// far expires
$cg = new HTTP_ConditionalGet(array(
'cacheUntil' => (time() + 86400 * 365) // 1 yr
'setExpires' => (time() + 86400 * 365) // 1 yr
));
$cg->sendHeaders();
// generate, send content
$title = 'Expires date is known';
$explain = '
<p>Here we set "cacheUntil" to a timestamp or GMT date string. This results in
<p>Here we set "setExpires" to a timestamp or GMT date string. This results in
<code>$cacheIsValid</code> always being false, so content is always served, but
with an Expires header.
<p><strong>Note:</strong> This isn\'t a conditional GET, but is useful if you\'re

View File

@@ -96,8 +96,8 @@ class Minify {
'lastModifiedTime' => self::$_options['lastModifiedTime']
,'isPublic' => self::$_options['isPublic']
);
if (null !== self::$_options['cacheUntil']) {
$cgOptions['cacheUntil'] = self::$_options['cacheUntil'];
if (null !== self::$_options['setExpires']) {
$cgOptions['setExpires'] = self::$_options['setExpires'];
}
// check client cache
@@ -193,9 +193,7 @@ class Minify {
,'encodeLevel' => 9
,'perType' => array() // per-type minifier options
,'contentTypeCharset' => null // leave out of Content-Type header
// @todo: rename option "setExpires" ?
,'cacheUntil' => null // send Expires header
,'setExpires' => null // send Expires header
), $given);
$defaultMinifiers = array(
'text/css' => array('Minify_CSS', 'minify')
@@ -282,9 +280,10 @@ class Minify {
$defaultOptions = isset(self::$_options['perType'][$type])
? self::$_options['perType'][$type]
: array();
// if minifier not set, default is no minification
$defaultMinifier = isset(self::$_options['minifiers'][$type])
? self::$_options['minifiers'][$type]
: array('Minify', '_trim');
: false;
if (Minify_Source::haveNoMinifyPrefs(self::$_controller->sources)) {
// all source have same options/minifier, better performance
@@ -292,8 +291,10 @@ class Minify {
$pieces[] = $source->getContent();
}
$content = implode($implodeSeparator, $pieces);
self::$_controller->loadMinifier($defaultMinifier);
$content = call_user_func($defaultMinifier, $content, $defaultOptions);
if ($defaultMinifier) {
self::$_controller->loadMinifier($defaultMinifier);
$content = call_user_func($defaultMinifier, $content, $defaultOptions);
}
} else {
// minify each source with its own options and minifier
foreach (self::$_controller->sources as $source) {
@@ -304,9 +305,13 @@ class Minify {
$options = (null !== $source->minifyOptions)
? array_merge($defaultOptions, $source->minifyOptions)
: $defaultOptions;
self::$_controller->loadMinifier($minifier);
// get source content and minify it
$pieces[] = call_user_func($minifier, $source->getContent(), $options);
if ($defaultMinifier) {
self::$_controller->loadMinifier($minifier);
// get source content and minify it
$pieces[] = call_user_func($minifier, $source->getContent(), $options);
} else {
$pieces[] = $source->getContent();
}
}
$content = implode($implodeSeparator, $pieces);
}
@@ -350,19 +355,4 @@ class Minify {
,self::$_options['perType']
)));
}
/**
* The default minifier if content-type has no minifier
*
* This is necessary because trim() throws notices when you send in options
* as a 2nd arg.
*
* @param string $content
*
* @return string
*/
private static function _trim($content, $options)
{
return trim($content);
}
}

View File

@@ -54,7 +54,7 @@ class Minify_Controller_Base {
* 'contentTypeCharset' : if given, this will be appended to the Content-Type
* header sent, useful mainly for HTML docs.
*
* 'cacheUntil' : set this to a timestamp or GMT date to have Minify send
* 'setExpires' : set this to a timestamp or GMT date to have Minify send
* an HTTP Expires header instead of checking for conditional GET.
* E.g. (time() + 86400 * 365) for 1yr (default null)
* This has nothing to do with server-side caching.
@@ -100,7 +100,7 @@ class Minify_Controller_Base {
if (! isset($options['contentType'])) {
$options['contentType'] = Minify_Source::getContentType($this->sources);
}
// last modified is needed for caching, even if cacheUntil is set
// last modified is needed for caching, even if setExpires is set
if (! isset($options['lastModifiedTime'])) {
$max = 0;
foreach ($sources as $source) {

View File

@@ -16,7 +16,7 @@ require '../../config.php';
$serveExtensions = array('css', 'js');
// set HTTP Expires header if GET 'v' is sent
$cacheUntil = isset($_GET['v'])
$setExpires = isset($_GET['v'])
? (time() + 86400 * 30)
: null;
@@ -40,7 +40,7 @@ if (isset($_GET['f'])) {
Minify::serve('Files', array(
dirname(__FILE__) . '/' . $filename
), array(
'cacheUntil' => $cacheUntil
'setExpires' => $setExpires
));
exit();
}