Minify框架分析,主要功能类简介

主要功能类简介

config.php      默认缩小应用程序的配置

index.php:为实施默认缩小的前端控制器请勿编辑!通过config.phpgroupsConfig.php配置实用程

Minify:缩小 - 联合收割机,minifies,和缓存的JavaScriptCSS文件需求

abstract class Minify_Controller_Base  缩小控制器的基类

Minify_Source:内容源缩小的缩小。这允许每个源微小的选项和文件的混合从其他来源的内容。

Minify_Cache_File 缓存文件处理

 

主要功能类简介

config.php 默认缩小应用程序的配置

路径:min/config.php

 

$min_allowDebugFlag = FALSE;

在“调试”模式,缩小可以结合起来,没有微小的文件和添加注释,以表明原始文件的行#。

为了让调试,将此选项设置为true,并添加“&debug= 1”,一个URI。例如/分钟/ F = script1.jsscript2.js及调试= 1

 

$min_errorLogger = false;

设置为true,将消息记录到FirePHPFirefoxFirebug的插件)。设置虚假的,没有错误日志记录(缩小可能会稍快)。@链接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__0strlen的(__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.css123456

 

/ / $ min_serveOptions ['minApp] ['allowDirs'] =阵列('/ / JS''/ / CSS”);

如果你想限制的“F”选项内/以下文件以下DOCUMENT_ROOT的特定目录,此设置。您仍然需要包括在目录中FB GET参数。=DOCUMENT_ROOT的快捷方式

 

$min_serveOptions ['minApp'] ['groupsOnly'] = FALSE;

设置为true,禁用的“FGET参数用于指定文件。只有“G”参数将予以考虑。

 

$min_serveOptions [“minApp'] ['MAXFILES'] = 10;

最大的“FGET参数,可以在指定的文件

 

$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(可能没有效果)

 

index.php:为实施默认缩小的前端控制器请勿编辑!通过config.phpgroupsConfig.php配置实用程序

路径: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();

}

 

Minify:缩小 - 联合收割机,minifies,和缓存的JavaScriptCSS文件需求

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' : 编码压缩级别(09,默认9

'contentTypeCharset' : 追加到发送的Content - Type头。设置一个falsey值删除。 (默认的UTF - 8“)

'maxAge' : 这个设定的秒数,客户端应该使用它的缓存前与服务器的重新验证。这集的Cache - Control:最大的年龄和 Expires头。不像老“setExpires”的设置,此设置不会防止有条件的GETs。请注意,这已无关,与服务器端缓存。

'rewriteCssUris' : 如果为true,服务()会自动设定“currentDir,minifier选项以启用URICSS文件复写(默认为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 (可选)阵列,用于服务的选项。默认情况下这些都是已经设置:闲适= TRUEencodeMethod= ''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 没有检测到在顶部.

 

abstract class Minify_Controller_Base  缩小控制器的基类

控制器类的验证请求,并用它来创建源喜欢的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)

设置文件源

 

Minify_Source:内容源缩小的缩小。这允许每个源微小的选项和文件的混合从其他来源的内容。

属性:

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)

从内容类型组的来源这就是所谓的一个“内容”选项,如果用户没有通过

 

Minify_Cache_File 缓存文件处理

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

你可能感兴趣的:(js,css,简介,合并,Minify)