Minify框架分析,主要功能类简介
主要功能類簡介
config.php????? 默認縮小應用程序的配置
index.php:為實施默認縮小的前端控制器請勿編輯!通過config.php和groupsConfig.php配置實用程序
Minify:縮小 - 聯合收割機,minifies,和緩存的JavaScript和CSS文件需求
abstract class Minify_Controller_Base? 縮小控制器的基類
Minify_Source:內容源縮小的縮小。這允許每個源微小的選項和文件的混合從其他來源的內容。
Minify_Cache_File 緩存文件處理
?
主要功能類簡介
config.php 默認縮小應用程序的配置
路徑: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(可能沒有效果)
?
index.php:為實施默認縮小的前端控制器請勿編輯!通過config.php和groupsConfig.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,和緩存的JavaScript和CSS文件需求
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 沒有檢測到在頂部.
?
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
轉載于:https://blog.51cto.com/hoogle/734305
總結
以上是生活随笔為你收集整理的Minify框架分析,主要功能类简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDOJ1106 排序
- 下一篇: HDU 下沙的沙子有几粒