主要功能类简介
config.php 默认缩小应用程序的配置
index.php:为实施默认缩小的前端控制器请勿编辑!通过config.php和groupsConfig.php配置实用程序
Minify:缩小 - 联合收割机,minifies,和缓存的JavaScript和CSS文件需求
abstract class Minify_Controller_Base 缩小控制器的基类
Minify_Source:内容源缩小的缩小。这允许每个源微小的选项和文件的混合从其他来源的内容。
Minify_Cache_File 缓存文件处理
路径:min/config.php
$min_allowDebugFlag = FALSE;
在“调试”模式,缩小可以结合起来,没有微小的文件和添加注释,以表明原始文件的行#。
为了让调试,将此选项设置为true,并添加“&debug= 1”,一个URI。例如/分钟/ F = script1.js,script2.js及调试= 1
$min_errorLogger = false;
设置为true,将消息记录到FirePHP(Firefox的Firebug的插件)。设置虚假的,没有错误日志记录(缩小可能会稍快)。@链接http://www.firephp.org/
如果你想使用自定义的错误记录器,记录仪设置为实例。你的对象应该有一个方法的日志(字符串$消息)。
@ TODO缓存系统没有错误日志记录。
$min_enableBuilder = TRUE;
允许使用缩小的URI生成器应用程序。如果您不再需要此设置为false。
/ / $ min_cachePath =“C:\ \ WINDOWS \ \ TEMP”;
/ / $ min_cachePath ='/ tmp目录“;
/ / $ min_cachePath = preg_replace('/ ^ \ \ D +;/',“,session_save_path());
为了获得最佳性能,在这里指定temp目录。否则缩小将加载额外的代码来猜测。下面的一些例子:
$min_documentRoot = '';
/ / $ min_documentRoot = SUBSTR(__FILE__,0,strlen的(__FILE__) - 15);
/ / $ min_documentRoot = $ _SERVER ['SUBDOMAIN_DOCUMENT_ROOT'];
留下一个空字符串使用PHP的$_SERVER ['DOCUMENT_ROOT“]。
在某些服务器上,这个值可能配置错误或丢失。如果是这样,设置此完整的文档的根路径没有结尾的斜线。
例如: /首页/帐户名/的public_html“或”C\\ XAMPP\\htdocs中“
如果/分钟/直接在您的文档根目录,只是取消注释第二行。第三行可能会在一些Apache服务器工作。
$min_cacheFileLocking = TRUE;
缓存文件锁定。设置为false,如果文件系统是NFS。至少在一NFS系统的羊群- ING尝试PHP停顿30秒!
$min_serveOptions [“bubbleCssImports'] = FALSE;
结合后,可以将多个CSS文件的规则@进口报关单,是无效的。缩小将尝试检测当发生这种情况,并放置一个警告注释在CSS的输出顶部。要解决此您可以在你的CSS文件移动@进口,或启用此选项,这将将所有@进口到输出的顶端。请注意,移动@进口可能影响CSS值(这就是为什么这个选项默认是关闭的)。
$min_serveOptions['MaxAge'] = 1800;
浏览器缓存的最大年龄在几秒钟内。在此期限之后,浏览器将发送另外一个条件GET。使用低流量在一段较长的时间内但你可能要缩短作出改变之前,如果它的关键立即看到这些变化。
注意:尽管此设置,如果包括在年底的数字 querystring中,的MaxAge将被设定为一年。例如/分钟/ F = hello.css&123456
/ / $ min_serveOptions ['minApp“] ['allowDirs'] =阵列('/ / JS','/ / CSS”);
如果你想限制的“F”选项内/以下文件以下DOCUMENT_ROOT的特定目录,此设置。您仍然需要包括在目录中F或B GET参数。=为DOCUMENT_ROOT的快捷方式
$min_serveOptions ['minApp'] ['groupsOnly'] = FALSE;
设置为true,禁用的“F”GET参数用于指定文件。只有“G”参数将予以考虑。
$min_serveOptions [“minApp'] ['MAXFILES'] = 10;
最大的“F”GET参数,可以在指定的文件
$min_symlinks = array();
如果您缩小符号链接的目录中存储的CSS文件,URI重写算法可能会失败。为了防止这种情况,提供了一个链接路径的数组目标路径,链接路径的文档根目录内。
由于路径需要为规范化的工作,使用“/ /”来代替在链接路径的文档根目录(数组的键)。例如:的<code>
阵列(“/ /符号链接'=>'/实际/目标/路径”)/ / UNIX
阵列(“/ /静态'=>”D:\ \ staticStorage“)/ /视窗 </ code>的
$min_uploaderHoursBehind = 2;
如果你从windows系统上传文件至非windows系统服务器中,windows可能对文件提示错误的修改时间,
由于源文件频繁地上传,可能导致减少保持服务的缓存文件时效。(例如,可能超过1小时)
。
修改文件后迅速地上传,利用会话命令更新服务器上的修改时间,如修改时间跳到很多段时间之前,将此变量设置为此数字。如果该文件的修改时间向后移动,这不应该是需要的。
在windows系统SFTP客户端winscp,有一个选项不用改变下面变量便可解决这个问题。
在登出环境下,选择"用DST调整远程客户端时间戮"。
$min_libPath = dirname(__FILE__) . '/lib';
缩小的lib文件夹的路径。如果你碰巧来移动它,改变此相应。
ini_set(“zlib.output_compression','0');
尝试禁用output_compression(可能没有效果)
路径:min/index.php
//获得min路径
define('MINIFY_MIN_DIR', dirname(__FILE__));
//加载配置文件
require MINIFY_MIN_DIR . '/config.php';
//设置包含路径
set_include_path($min_libPath . PATH_SEPARATOR . get_include_path());
require 'Minify.php';
//创建缓存对象
Minify::$uploaderHoursBehind = $min_uploaderHoursBehind;
Minify::setCache(
isset($min_cachePath) ? $min_cachePath : ''
,$min_cacheFileLocking
);
//设置文档根目录
if ($min_documentRoot) {
$_SERVER['DOCUMENT_ROOT'] = $min_documentRoot;
} elseif (0 === stripos(PHP_OS, 'win')) {
Minify::setDocRoot(); // IIS可能需要帮助
}
//
$min_serveOptions['minifierOptions']['text/css']['symlinks'] = $min_symlinks;
if ($min_allowDebugFlag && isset($_GET['debug'])) {
$min_serveOptions['debug'] = true;
}
if ($min_errorLogger) {
require_once 'Minify/Logger.php';
if (true === $min_errorLogger) {
require_once 'FirePHP.php';
Minify_Logger::setLogger(FirePHP::getInstance(true));
} else {
Minify_Logger::setLogger($min_errorLogger);
}
}
//检查的URI版本
if (preg_match('/&\\d/', $_SERVER['QUERY_STRING'])) {
$min_serveOptions['maxAge'] = 31536000;
}
if (isset($_GET['g'])) {
//以及需要配置的群体
$min_serveOptions['minApp']['groups'] = (require MINIFY_MIN_DIR . '/groupsConfig.php');
}
if (isset($_GET['f']) || isset($_GET['g'])) {
//服务
Minify::serve('MinApp', $min_serveOptions);
} elseif ($min_enableBuilder) {
header('Location: builder/');
exit();
} else {
header("Location: /");
exit();
}
const VERSION = '2.1.3';
const TYPE_CSS = 'text/css';
const TYPE_HTML = 'text/html';
const TYPE_JS = 'application/x-javascript'; 有一些较理想的JS内容类型的辩论,但是这是Apache的默认和雅虎使用..
public static $uploaderHoursBehind = 0;
多少个小时的背后是上传文件的文件修改时间?如果您上传的文件从Windows到非Windows服务器,Windows可能报告文件的不正确修改时间。修改和上传后立即文件,使用touch命令更新服务器上的文件的修改时间。如果在时间修改时间跳跃提前几个小时,设置这个变量,这个数字。如果的修改时间向后移动,这不应该是必要的。
public static $importWarning = "\n";
如果该字符串不是空的服务()选项'bubbleCssImports“没有设置,那么服务()将检查CSS的@ import声明文件出现在合并后的样式表为时已晚。如果找到了,服务()会在前面加上输出与此警告。
private static $_cache = null;
@var mixed Minify_Cache_* 对象或null(即没有服务器使用高速缓存)
protected static $_controller = null;
@var Minify_Controller 当前请求的主动控制器
protected static $_options = null;
@var array options 当前请求的选项
方法:
public static function setCache($cache = '', $fileLocking = true);
指定缓存对象(相同的接口作为Minify_Cache_File)或路径使用Minify_Cache_File。如果不叫,缩小不会使用缓存,每200响应,将需要重组的文件,缩小和编码输出。
@param mixed $cache 缓存对象相同的接口Minify_Cache_File ORA目录路径,或禁用缓存的空。 (默认= '')
@param bool $fileLocking (默认值= TRUE),这仅适用于,如果第一个参数是一个字符串。
@return null
public static function serve($controller, $options = array());
服务为一个缩小的文件的请求。
下面的可用选项,并在基地控制器默认:
'isPublic' : 发送缓存控制,而不是“私”的“公共”头,允许共享缓存,缓存的输出。 (默认为true)
'quiet' : 设置为true,已成为()返回一个数组而不是发送任何头/输出(默认为false)
'encodeOutput' : 设置为false禁用内容的编码,而不是发送Vary头(默认为true)
'encodeMethod' : 通常,你应该让这取决于HTTP_Encoder(保留空),但你可以强制一个特定的编码要返回,通过设置“gzip压缩”或“(无编码)
'encodeLevel' : 编码压缩级别(0到9,默认9)
'contentTypeCharset' : 追加到发送的Content - Type头。设置一个falsey值删除。 (默认的UTF - 8“)
'maxAge' : 这个设定的秒数,客户端应该使用它的缓存前与服务器的重新验证。这集的Cache - Control:最大的年龄和 Expires头。不像老“setExpires”的设置,此设置不会防止有条件的GETs。请注意,这已无关,与服务器端缓存。
'rewriteCssUris' : 如果为true,服务()会自动设定“currentDir”,minifier选项以启用URI的CSS文件复写(默认为true)
'bubbleCssImports' : 如果为true,所有的@联合CSS的进口报关单文件将被移动到顶部。请注意,这可能会改变有效的CSS值由于为了改变。 (默认为false)
'debug' : 设置为true,以缩小与“行”的控制器的所有来源,这简化合并的文件的调试。这也防止了304响应。 @see Minify_Lines::minify()
'minifiers' : 重写缩小minifier功能的默认选择一个特定的内容类型,指定在您的回调的关键
'minifierOptions' : 发送minifier功能的选项,指定您的选择根据内容类型的关键。例如要发送的CSS minifier选项:
'contentType' : (可选),这仅仅是必要的,如果您的文件扩展名不 JS/ CSS / HTML。不管源文件将被发送给定的内容类型扩展,因此这不应该是在A组中使用的配置与其他的JavaScript / CSS文件。
任何控制器选项都记录在该控制器的setupSources()方法。
@param mixed instance Minify_Controller_Base或字符串名称的子类控制器。例如“文件”
@param array $options 控制器/服务选项
@return mixed null,或者,如果“安静”选项设置为true,数组键“成功”(BOOL)“的StatusCode”(INT),“内容”(字符串),并“头”(阵列)。
public static function combine($sources, $options = array())
返回结合缩小的内容的来源无内部将使用缓存的内容将不会是HTTP编码。
@param array $sources 文件路径和/或Minify_Source对象的数组
@param array $options (可选)阵列,用于服务的选项。默认情况下这些都是已经设置:闲适= TRUE,encodeMethod= '',lastModifiedTime= 0。
@return string
public static function setDocRoot($unsetPathInfo = false)
在IIS中,创建$_SERVER['DOCUMENT_ROOT“]
@param bool $unsetPathInfo (默认为false)如果情况属实,$ _SERVER [“PATH_INFO”]将取消设置(这是与Apache的设置不一致)
@return null
protected static function _setupDebug($sources)
设置源使用Minify_Lines
@param array $sources Minify_Source 实例
@return null
protected static function _combineMinify()
结合源和minifies结果。
@return string
protected static function _getCacheId()
请为这一要求的一个独特的缓存ID。任何可能影响输出的设置是考虑到
@return string
protected static function _handleCssImports($css)
Bubble CSS @imports顶端或预先警告如果
@import 没有检测到在顶部.
控制器类的验证请求,并用它来创建源喜欢的contentType的微小和设置选项。这也是负责minifier代码加载后request.p CON
abstract public function setupSources($options);
安装控制器,并设置为缩小需要的选项Minify::source
您必须覆盖在子类控制器的这个方法来设置$>来源。如果请求是无效的,确保美元 - >来源留下一个空数组。然后地带任何控制器特定的选项$选项并返回它。为了提供文件,$>来源必须是一个数组Minify_Source对象。
@param array $options controller and Minify options
return array $options Minify::serve options
public function getDefaultMinifyOptions()
获取此控制器的默认缩小选项,在子类覆盖更改默认值
@return array options for Minify
public function getDefaultMinifers()
该控制器的默认minifiers。重写子类来改变默认值.
@return array minifier callbacks for common types
public function loadMinifier($minifierCallback)
加载任何要执行给定的minifier回调的代码。
控制器负责按需加载的微小代码通过这个方法。这种内置的功能将只加载类尚未定义类的静态方法回调。它使用PEAR的惯例,所以,给定的数组(“Jimmy_Minifier”,“minCss”),这功能将包括“麦/ Minifier.php'。
如果您需要按需加载的代码,这不适合你,你需要重写此函数在子类。
@see Minify_Controller_Page::loadMinifier()
@param callback $minifierCallback callback of minifier function
@return null
public static function _fileIsSafe($file, $safeDirs)
是用户内允许目录中的文件,现有的,和JS / CSS/ HTML/ TXT的扩展?
这是一个方便的功能控制器接受用户给定的路径
@param string $file full file path (already processed by realpath())
@param array $safeDirs directories where files are safe to serve. Files can alsobe in subdirectories of these directories.
@return bool file is safe
public $sources = array();
@var array instances of Minify_Source, 它提供的内容和任何个人微小的需求。
@see Minify_Source
public final function mixInDefaultOptions($options)
混合使用用户指定的选项在默认的控制器选项
@param array $options user options
@return array mixed options
public final function analyzeSources($options = array())
分析源(如果有的话),并设置为选项“的contentType”“lastModifiedTime”如果他们已经不是。
@param array $options options for Minify
@return array options for Minify
protected function log($msg)
发送消息,以缩小记录仪
@param string $msg
@return null
class Minify_Controller_Files extends Minify_Controller_Base
minifying一组文件的控制器类
public function setupSources($options)
设置文件源
属性:
public $lastModified = null;
@var int 最后修改时间
public $minifier = null;
@var 回调函数minifier专门为这次的来源.
public $minifyOptions = null;
@var array 微小的选项,具体到这个源。
public $filepath = null;
@var string 文件的完整路径
public $contentType = null;
@var string HTTP内容类型(缩小缩小需要的常量之一:TYPE_*)
protected $_content = null;
protected $_getContentFunc = null;
protected $_id = null;
方法:
public function __construct($spec)
创建一个Minify_Source。
在规范阵列(),您可以提供到现有的“文件路径”(存在的文件将不被检查!)或给予'身份证'(唯一字符串为内容),“内容”(字符串的内容)和“lastModified”(最后更新unixtime)。
作为一种快捷方式,控制器将取代“/ /”开头一个文件路径和$ _SERVER['DOCUMENT_ROOT“]。 '/'。
public function getContent()
返回文件内容
public function getId()
返回文件名称ID
public static function haveNoMinifyPrefs($sources)
验证一个单一的微小的调用可以处理所有来源
public static function getDigest($sources)
唯一的字符串获取的来源
public static function getContentType($sources)
从内容类型组的来源这就是所谓的一个“内容”选项,如果用户没有通过
public function __construct($path = '', $fileLocking = false)
public function store($id, $data)
将数据写到缓存。
public function getSize($id)
得到一个高速缓存的大小的入口
public function isValid($id, $srcMtime)
缓存条目是否存在?
@param string $id cache id (e.g. a filename)
@param int $srcMtime mtime of the original source file(s)
@return bool exists
public function display($id)
把缓存内容输出
@param string $id cache id (e.g. a filename)
public function fetch($id)
取缓存内容
@param string $id cache id (e.g. a filename)
@return string
public function getPath()
取缓存路径使用
@return string