Мод уменьшает размер страницы отправляемой браузеру, за счёт удаления непечатаемых символов из шаблона страницы, преобразование ведётся на лету.
Код: Выделить всё
####################################################################################################
## MOD Title: Output Page Size Reducer MOD
## MOD Author: Delestor (N/A) (N/A) N/A
## MOD Description: Reduse output page size to delete useless character
## MOD Version: 0.1.2
##
## Installation Level: Easy
## Installation Time: 3 Minutes
## Files To Edit (3):
## includes/functions.php
## includes/template.php
## templates/subSilver/overall_footer.tpl
##
## Included Files (0): n/a
##
## License: http://opensource.org/licenses/gpl-license.php GNU Public License v2
####################################################################################################
##
## For security purposes, please check: http://www.phpbb.com/mods/
## for the latest version of this MOD. Although MODs are checked
## before being allowed in the MODs Database there is no guarantee
## that there are no security problems within the MOD. No support
## will be given for MODs not found within the MODs Database which
## can be found at http://www.phpbb.com/mods/
##
####################################################################################################
##
## Author Notes:
## A short description:
## Reduce page size to deleting non-printing characters.
##
####################################################################################################
##
## MOD History:
## 2006-10-26 - Version 0.1.2
## - [BETA] Fix incompatibility to RSS Feed mod. Attempt's to increase speed.
## 2006-10-24 - Version 0.1.1
## - [BETA] Fix litle bag (script in one string ability uncorrect processing).
## 2006-10-23 - Version 0.1.0
## - [BETA] First stable version.
##
####################################################################################################
##
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##
####################################################################################################
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/overall_footer.tpl
#
#-----[ FIND ]------------------------------------------
#
<!--
We request you retain the full copyright notice below including the link to www.phpbb.com.
This not only gives respect to the large amount of time given freely by the developers
but also helps build interest, traffic and use of phpBB 2.0. If you cannot (for good
reason) retain the full copyright we request you at least leave in place the
Powered by phpBB line, with phpBB linked to www.phpbb.com. If you refuse
to include even this then support on our forums may be affected.
The phpBB Group : 2002
// -->
#
#-----[ REPLACE WITH ]------------------------------------------
# Closely read through and then remove
<!--// OPSR:RB-->
<!--// OPSR:RE-->
#
#-----[ OPEN ]------------------------------------------
#
includes/template.php
#
#-----[ FIND ]------------------------------------------
#
function compile($code, $do_not_echo = false, $retvar = '')
{
#
#-----[ AFTER ADD ]------------------------------------------
#
// OPSR:A
$code = crude_template_cleaning($code);
#
#-----[ FIND ]------------------------------------------
#
for ($i = 0; $i < $line_count; $i++)
{
#
#-----[ AFTER ADD ]------------------------------------------
#
// OPSR:A
$code_lines[$i]=iteration_template_cleaning_process($code_lines[$i], 1);
#
#-----[ FIND ]------------------------------------------
#
$code_lines[$i] = '$' . $retvar . '.= \'' . $code_lines[$i] . '\' . "\\n";';
}
#
#-----[ AFTER ADD ]------------------------------------------
#
// OPSR:A
$code_lines[$i]=iteration_template_cleaning_process($code_lines[$i], 0);
#
#-----[ OPEN ]------------------------------------------
#
includes/functions.php
#
#-----[ FIND ]------------------------------------------
# Find end of file
?>
#
#-----[ BEFORE ADD ]------------------------------------------
#
// OPSR:B
function crude_template_cleaning($s)
{
//crude cleaning
// tab cleaning
$s=str_replace("\t", '', $s);
// windows file format clean, if need
$s=str_replace("\r", '', $s);
// reduce iteration
$s=preg_replace("#^ *$#m", '',$s);
$s=preg_replace("#\n+#", "\n", $s);
// gap leaning
$s=preg_replace("# +#", ' ', $s);
return $s;
}
function iteration_template_cleaning_process($s, $first)
{
static $counter = array('script' => 0,
'style' => 0,
'css_com' => 0);
static $s_matches = array('');
static $flag = array('xml' => false,
'script' => false,
'style' => false,
'css_com' => false);
static $clean_list = array('line_feed' => false,
'string' => false);
if($first==1)
{
//crude cleaning
trim($s);
if(preg_match("#(?:<(script|style|\?xml)[^>]*?>)#", $s, $s_matches)) {
if($s_matches[1]=='?xml') {
$flag['xml'] = true;
} else if($s_matches[1] == 'script' ) {
$counter['script']++;
} else {
$counter['style']++;
}
}
if(preg_match("#(?:<\W*?\/(script|style)[^>]*?>)#", $s, $s_matches)) {
if($s_matches[1] == 'script' ) {
$counter['script']--;
$flag['script'] = true;
} else {
$counter['style']--;
$flag['style'] = true;
}
}
if ($flag['xml'] == true ) {
// XML cleaning
$clean_list['line_feed']=false;
} else if($counter['script'] > 0 || $flag['script'] == true ) {
// SCRIPT cleaning
$flag['script']=false;
$clean_list['line_feed']=false;
//Deleting coments, if need
//ONLY JAVA FORMAT!!!
$s=preg_replace("#\/\/.*[^-]{2}[^>]$#m", '',$s);
} else if($counter['style'] > 0 || $flag['style'] == true ) {
// CSS cleaning
$flag['style']=false;
$clean_list["cleaning_line_feed"] = true;
//Deleting coments, if need
$s=preg_replace("#\/\*.*\*?\/#s",'',$s);
if(preg_match("#\/\*[\w ]*#i", $s) ) {
$counter['css_com']++;
} else if(preg_match("#[\w ]*\*\/\W*#i", $s) ) {
$counter['css_com']--;
$flag['css_com']=true;
}
if(($counter['css_com']>0) || ($flag['css_com']==true)) {
$flag['css_com']=false;
$clean_list['string']=true;
}
} else {
// HTML cleaning
$clean_list['line_feed']=true;
//deleting comentary, if need by my format
//$s=preg_replace("#^<!--\/\/ [A-Z0-9]{2,4}(?:_[A-Z0-9]{2,4})?:[A-Z]{1,4}-->#",'',$s);
$s=preg_replace("#^<!--(?!(?: BEGIN| END)).*?-->#",'',$s);
}
//$s="\n" . '$s_m.[1]:|' . $s_matches[1]. '| fXml:' . $flag['xml'] . ' Style:' . $counter['style'] .' Scr:' . $counter['script'] . ' css_tmp=' . $flag['css_com'] . '<br>' . '|' .$s ;
if(preg_match("#^ *$#" , $s)) $clean_list['string']=true;
} else {
//Full deleting line feed
if($clean_list['line_feed']==true) {
$s=str_replace("\\n",'',$s);
}
//Deleting empty string
if($clean_list['string']==true) {
$s='';
$clean_list['string']=false;
}
}
return $s;
}
// OPSR:E
#
#-----[ SAVE/CLOSE ALL FILES ]---------------------
#
# EoM
Удаляются символы табуляции, лишние символы пробела, переносы строки в CSS и html данных, переносы строки в скриптах сохраняются, благодаря чему мод совместим со стандартной формой ответа и с формой быстрого ответа Extended Quick Reply Form 3.0.3.
Так же удаляются комментарии в CSS данных; однострочные комментарии в HTML и в скриптах в формате java.
С версии 0.1.2 совместим и с модом RSS Feed.
Мод тестировался на совместимость с phpBB 2.0.21, php4.
Должен работать в php3~5.
Целесообразно совместное использование с модом:
CSS definition switch
( http://www.phpbbguru.net/community/viewtopic.php?t=4261 )
- автоматически записывает каскадные таблицы стилей в отдельный файл, который браузеры обычно кешируют, либо вынесение их в отдельный файл вручную.
Подобные моды разрабатывались:
http://www.phpbbguru.net/community/topic4106-45.html
http://www.phpbbguru.net/community/view ... highlight=
Но автор последнего прекратил все работы над ним в ноябре 2005, так и не доведя его до логического конца.
Первая версия мода, о быстродействии пока серьёзно не задумывался:)