viagra générique kamagra kopen viagra pour femme cialis en ligne kamagra online cialis générique kamagra 100 kamagra 100mg cialis bijsluiter cialis kopen viagra kopen levitra prix viagra online levitra générique
Minify HTML, JavaScript and CSS in WordPress not need plugin
Th6 27, 2017
53 Views
0 0

Minify HTML, JavaScript and CSS in WordPress not need plugin

Written by

Sử dụng quá nhiều plugin trên blog/ website WordPress không bao giờ là một ý tưởng tốt. Bởi vì chúng ta đều biết rằng các hacker có thể dễ dàng tấn công blog/ website WordPress của bạn thông qua việc khai thác lỗ hổng từ plugin.

Giảm bớt hay minify HTML, JavaScript và CSS về cơ bản là giảm kích thước của các tập tin. Từ đó, chúng sẽ nhỏ hơn, nhẹ hơn và load nhanh hơn, giúp cải thiện tốc độ hiển thị nội dung trên trình duyệt web. Việc minify dữ liệu về cơ bản là khá đơn giản. Bạn chỉ cần tìm cách loại bỏ các vùng không gian trống, tham số và comments của JavaScript, CSS, HTML là được. Chức năng minify có thể được tìm thấy trong một số plugin như WP-Minify hay Autoptimize.

Minify HTML, JavaScript và CSS trong WordPress

Trên thực tế, các bạn có thể làm điều này một cách dễ dàng mà không cần đến plugin. Tất cả những gì bạn cần làm là copy và paste đoạn code sau đây vào file functions.php của theme mà bạn đang sử dụng.

  class WP_HTML_Compression
  {
  // Settings
  protected $compress_css = true;
  protected $compress_js = true;
  protected $info_comment = true;
  protected $remove_comments = true;
// Variables
protected $html;
public function __construct($html)
{
if (!empty($html))
{
$this->parseHTML($html);
}
}
public function __toString()
{
return $this->html;
}
protected function bottomComment($raw, $compressed)
{
$raw = strlen($raw);
$compressed = strlen($compressed);
$savings = ($raw-$compressed) / $raw * 100;
$savings = round($savings, 2);
return ‘<!–HTML compressed, size saved ‘.$savings.’%. From ‘.$raw.’ bytes, now ‘.$compressed.’ bytes–>‘;
}
protected function minifyHTML($html)
{
$pattern = ‘/<(?<script>script).*?<\/script\s*>|<(?<style>style).*?<\/style\s*>|<!(?<comment>).*?–>|<(?<tag>[\/\w.:]*)(?:.*?|\.*?\’|[^\’“>]+)*>|(?<text>((<[^!\/\w.:-])?[^<]*)+)|/si;
preg_match_all($pattern, $html, $matches, PREG_SET_ORDER);
$overriding = false;
$raw_tag = false;
// Variable reused for output
$html = ;
foreach ($matches as $token)
{
$tag = (isset($token[tag])) ? strtolower($token[tag]) : null;
$content = $token[0];
if (is_null($tag))
{
if ( !empty($token[script]) )
{
$strip = $this>compress_js;
}
else if ( !empty($token[style]) )
{
$strip = $this>compress_css;
}
else if ($content == <!–wp-html-compression no compression–>)
{
$overriding = !$overriding;
// Don’t print the comment
continue;
}
else if ($this>remove_comments)
{
if (!$overriding && $raw_tag != textarea)
{
// Remove any HTML comments, except MSIE conditional comments
$content = preg_replace(/<!–(?!\s*(?:\[if [^\]]+]|<!|>))(?:(?!–>).)*–>/s, , $content);
}
}
}
else
{
if ($tag == pre || $tag == textarea)
{
$raw_tag = $tag;
}
else if ($tag == /pre || $tag == /textarea)
{
$raw_tag = false;
}
else
{
if ($raw_tag || $overriding)
{
$strip = false;
}
else
{
$strip = true;
// Remove any empty attributes, except:
// action, alt, content, src
$content = preg_replace(/(\s+)(\w++(?<!\baction|\balt|\bcontent|\bsrc)=””)/, $1, $content);
// Remove any space before the end of self-closing XHTML tags
// JavaScript excluded
$content = str_replace( />, />, $content);
}
}
}
if ($strip)
{
$content = $this>removeWhiteSpace($content);
}
$html .= $content;
}
return $html;
}
public function parseHTML($html)
{
$this>html = $this>minifyHTML($html);
if ($this>info_comment)
{
$this>html .= \n . $this>bottomComment($html, $this>html);
}
}
protected function removeWhiteSpace($str)
{
$str = str_replace(\t, , $str);
$str = str_replace(\n, , $str);
$str = str_replace(\r, , $str);
while (stristr($str, ))
{
$str = str_replace( , , $str);
}
return $str;
}
}
function wp_html_compression_finish($html)
{
return new WP_HTML_Compression($html);
}
function wp_html_compression_start()
{
ob_start(wp_html_compression_finish);
}
add_action(get_header, wp_html_compression_start);
view rawfunctions.php hosted with ❤ by GitHub

Nếu code bị lỗi, các bạn có thể download file text tại đây về máy tính để xem chi tiết.

Để kiểm tra xem liệu các chức năng minify có thực sự hoạt động hay không, các bạn chỉ cần view source (Ctrl + U) của blog/ website. Ở cuối mã nguồn, các bạn sẽ thấy thông báo trông như thế này:

<!–-HTML compressed, size saved …%. From …bytes, now …bytes-–>

Đơn giản vậy thôi. Chúc các bạn thành công!

Bình luận

Article Categories:
Thủ thuật wordpress

Project Manager tại Dịch vụ thiết kế website TTXweb. Có 5 năm kinh nghiệm trong lĩnh vực marketing . Thích hát , ca . Thích marketing và chia sẻ với mọi người.

Leave a Comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *