typecho主题集成HTML压缩功能

网络技术 admin 8个月前 (05-29) 91次浏览 0个评论

typecho主题集成HTML压缩功能

提升页面访问速度的优化方法有很多,其中包括对 HTML 代码的压缩,将HTML代码格式化为单行,去除回车注释等无效字符串以增加网页传速效率. Nginx , Apache 也有类似的模块可以直接输出类似的单行HTML代码。

Typecho也有类似的插件,如「CompressHTML-For-Typecho」->传送门,但存在一些兼容问题,这里提供一个修改的版本,将代码压缩功能集成到Typecho中。

(实测与HandSome主题兼容,与TpCache插件兼容)。

下面是教程,比较简单~

添加函数

还是那段压缩代码函数

function compressHtml($html_source) {     $chunks = preg_split('/(<!--<nocompress>-->.*?<!--</nocompress>-->|<nocompress>.*?</nocompress>|<pre.*?/pre>|<textarea.*?/textarea>|<script.*?/script>)/msi', $html_source, -1, PREG_SPLIT_DELIM_CAPTURE);     $compress = '';     foreach ($chunks as $c) {         if (strtolower(substr($c, 0, 19)) == '<!--<nocompress>-->') {             $c = substr($c, 19, strlen($c) - 19 - 20);             $compress .= $c;             continue;         } else if (strtolower(substr($c, 0, 12)) == '<nocompress>') {             $c = substr($c, 12, strlen($c) - 12 - 13);             $compress .= $c;             continue;         } else if (strtolower(substr($c, 0, 4)) == '<pre' || strtolower(substr($c, 0, 9)) == '<textarea') {             $compress .= $c;             continue;         } else if (strtolower(substr($c, 0, 7)) == '<script' && strpos($c, '//') != false && (strpos($c, "r") !== false || strpos($c, "n") !== false)) {             $tmps = preg_split('/(r|n)/ms', $c, -1, PREG_SPLIT_NO_EMPTY);             $c = '';             foreach ($tmps as $tmp) {                 if (strpos($tmp, '//') !== false) {                     if (substr(trim($tmp), 0, 2) == '//') {                         continue;                     }                     $chars = preg_split('//', $tmp, -1, PREG_SPLIT_NO_EMPTY);                     $is_quot = $is_apos = false;                     foreach ($chars as $key => $char) {                         if ($char == '"' && $chars[$key - 1] != '\' && !$is_apos) {                             $is_quot = !$is_quot;                         } else if ($char == ''' && $chars[$key - 1] != '\' && !$is_quot) {                             $is_apos = !$is_apos;                         } else if ($char == '/' && $chars[$key + 1] == '/' && !$is_quot && !$is_apos) {                             $tmp = substr($tmp, 0, $key);                             break;                         }                     }                 }                 $c .= $tmp;             }         }         $c = preg_replace('/[\n\r\t]+/', ' ', $c);         $c = preg_replace('/\s{2,}/', ' ', $c);         $c = preg_replace('/>\s</', '> <', $c);         $c = preg_replace('/\/\*.*?\*\//i', '', $c);         $c = preg_replace('/<!--[^!]*-->/', '', $c);         $compress .= $c;     }     return $compress; }

将其放到HandSome主题的function.php的末尾

添加启用

然后打开footer.php,在末尾加上下面代码

<?php $html_source = ob_get_contents(); ob_clean(); print compressHtml($html_source); ob_end_flush(); ?>

保存好这两个文件,然后覆盖原文件

兼容其他代码

当然代码压缩可能会与一些插件不兼容,可以使用下面方法自行修改插件代码来保证这些不兼容的代码可以运行

<!--<nocompress>--> 不兼容代码 <!--</nocompress>-->  <nocompress> 不兼容代码 </nocompress>


免费部落 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:typecho主题集成HTML压缩功能
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址