วิธีการลดการส่งออก html หน้า PHP?


143

ฉันกำลังมองหาสคริปต์ PHP หรือคลาสที่สามารถลดขนาดหน้า hp ของฉันได้เช่นเดียวกับความเร็วของหน้า Google

ฉันจะทำสิ่งนี้ได้อย่างไร


14
หนึ่งซับขึ้นอยู่กับคำตอบ @RakeshS:ob_start(function($b){return preg_replace(['/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s'],['>','<','\\1'],$b);});
Francisco Presencia

5
@FranciscoPresencia นั่นเป็นสิ่งที่ไม่ดีจริงๆ คุณกำลังทำลายแท็กสคริปต์แท็กพื้นฐาน ฯลฯ
แบรด

นั่นเป็นความจริงตามที่ระบุไว้ในคำตอบของเขาความคิดเห็นมันไม่ทำงานกับ<pre>หรือ<code>แท็กเนื่องจากพวกเขาต้องการช่องว่างสำหรับโครงสร้างที่เหมาะสม อย่างไรก็ตาม<script>ควรเป็นภายนอกตามปกติหรือแบบอินไลน์ แต่ใช้;ในลักษณะที่เข้มงวดดังนั้นจึงใช้งานได้ แท็กอื่นใดที่ทำลาย @Brad ได้บ้าง ฉันไม่สามารถคิดถึงคนอื่นได้ ฉันควรจะเพิ่มวิธีที่รวดเร็วและสกปรกก่อนที่ความคิดเห็นก่อนหน้าของฉันแม้ว่า
Francisco Presencia

คำตอบ:


213

CSS และ Javascript

พิจารณาลิงค์ต่อไปนี้เพื่อย่อขนาดไฟล์ Javascript / CSS: https://github.com/mrclay/minify

HTML

บอก Apache ให้ส่ง HTML ด้วย GZip ซึ่งโดยทั่วไปจะลดขนาดการตอบกลับลงประมาณ 70% (หากคุณใช้ Apache โมดูลการกำหนดค่า gzip ขึ้นอยู่กับเวอร์ชันของคุณ: Apache 1.3 ใช้ mod_gzip ในขณะที่ Apache 2.x ใช้ mod_deflate)

ยอมรับการเข้ารหัส: gzip, deflate

การเข้ารหัสเนื้อหา: gzip

ใช้ตัวอย่างต่อไปนี้เพื่อลบ white-space ออกจาก HTML ด้วยความช่วยเหลือของบัฟเฟอร์ ob_start:

<?php

function sanitize_output($buffer) {

    $search = array(
        '/\>[^\S ]+/s',     // strip whitespaces after tags, except space
        '/[^\S ]+\</s',     // strip whitespaces before tags, except space
        '/(\s)+/s',         // shorten multiple whitespace sequences
        '/<!--(.|\s)*?-->/' // Remove HTML comments
    );

    $replace = array(
        '>',
        '<',
        '\\1',
        ''
    );

    $buffer = preg_replace($search, $replace, $buffer);

    return $buffer;
}

ob_start("sanitize_output");

?>

54
นี่เป็นฟังก์ชั่นที่ดี แต่ระวังถ้าคุณใช้แท็กPREบางครั้งบรรทัดใหม่จะถูกลบไปที่นั่น
fedmich

2
รหัสนี้ควรอยู่ที่ด้านบนสุดของสคริปต์หรือด้านล่างของคุณหรือไม่
jdepypere

8
นอกจากนี้คุณยังสามารถใช้คลาส Minify_HTML จากไลบรารี Minify นั้น ( $content = \Minify_HTML::minify($content);คุณสามารถเพิ่มการโทรกลับไปยังตัวย่อjs / css สำหรับรหัสอินไลน์) ดูgithub.com/mrclay/minify/blob/master/min/lib/Minify/HTML.php
Barryvdh

21
นอกจากนี้ยังแบ่ง JavaScript แบบอินไลน์ (เช่นใน<script>แท็ก) ที่ไม่ได้มี;ในตอนท้ายของทุกคำสั่งหรือมีความคิดเห็นที่ใช้//
Konstantin Pereiaslov

8
สิ่งนี้จะลบช่องว่างออกจาก textarea, pre, input, img และตัวแบ่งอินไลน์จาวาสคริปต์ ถ้าใครบางคนไม่พอใจที่จะใช้ชั้นเรียนขนาดใหญ่ที่มี DOM การแยกวิเคราะห์โซลูชันนี้ตาม regexp ใช้งานได้ดี
Peter

28

เปิด gzip หากคุณต้องการทำอย่างถูกต้อง คุณสามารถทำอะไรเช่นนี้:

$this->output = preg_replace(
    array(
        '/ {2,}/',
        '/<!--.*?-->|\t|(?:\r?\n[ \t]*)+/s'
    ),
    array(
        ' ',
        ''
    ),
    $this->output
);

สิ่งนี้จะลบขนาดหน้าประมาณ 30% โดยเปลี่ยน html ของคุณเป็นหนึ่งบรรทัดไม่มีแท็บไม่มีบรรทัดใหม่ไม่มีความคิดเห็น ระยะทางอาจแตกต่างกัน


1
การทำทั้งสองอย่างจะทำให้ปริมาณไบต์ที่ต้องการลดลงไปอีก
Wander Nauta

1
จริง ๆ แล้วการทำทั้งสองเหมือนกับการทำ gzip บนหน้า 700kb gzip จะนำมันลงไปประมาณ 400kb และ preg_replace () ประมาณ 450kb (ทั้งหมดขึ้นอยู่กับเนื้อหา) ทั้งสองจะเป็น 399kb เมื่อ gzip ลบช่องว่างเดียวกันแล้ว บีบอัดมัน
dogmatic69

18
สิ่งนี้อาจเป็นอันตรายได้เนื่องจากมันจะลบเงื่อนไข IE ... - คุณจะต้องเปลี่ยนเป็น /<!
Katai

3
ไม่ทำงานลบออกมากเกินไปทำให้เลอะรหัส ก่อนที่มันจะถูกต้อง W3C และหลังจากนี้ก็ไม่ได้
Codebeat

3
น่าเสียดายที่มันยังทำลายรหัส Javascript เช่นเพื่อสร้างการใช้งานที่ซับซ้อนมากขึ้นของ Google Maps - ซึ่งแน่นอนว่าฉันต้องการฟังก์ชั่นดังกล่าว
richey

19

การpreg_replace()แก้ปัญหาทั้งหมดข้างต้นมีปัญหาในการแสดงความคิดเห็นบรรทัดเดียวความคิดเห็นตามเงื่อนไขและข้อผิดพลาดอื่น ๆ ฉันขอแนะนำให้ใช้ประโยชน์จากโปรเจค Minify ที่ผ่านการทดสอบเป็นอย่างดีแทนที่จะสร้าง regex ของคุณเองตั้งแต่เริ่มต้น

ในกรณีของฉันฉันวางรหัสต่อไปนี้ที่ด้านบนของหน้า PHP เพื่อลดขนาด:

function sanitize_output($buffer) {
    require_once('min/lib/Minify/HTML.php');
    require_once('min/lib/Minify/CSS.php');
    require_once('min/lib/JSMin.php');
    $buffer = Minify_HTML::minify($buffer, array(
        'cssMinifier' => array('Minify_CSS', 'minify'),
        'jsMinifier' => array('JSMin', 'minify')
    ));
    return $buffer;
}
ob_start('sanitize_output');

1
รหัสของคุณไม่ได้ใส่ html ลงในหนึ่งบรรทัด
karadayi

ได้อ่านของคำถามแรกในลดขนาดโครงการคำถามที่พบบ่อย TL; DR: ละเว้นพวกเขา
แอนดรู

ฉันพยายามมันใช้งานไม่ได้ ฉันมีไฟล์ php ของฉัน css ระหว่าง <style> แท็กและจาวาสคริปต์ที่ฝังตัวด้วย php ระหว่าง <script> แท็ก
João Pimentel Ferreira

คุณวางรหัสนี้ที่ไหน สุดท้ายในส่วนท้ายหรือส่วนหัว?
ฟรานเชสโก

@francesco นี่ควรเป็นรหัสชิ้นแรกบนหน้าเว็บของคุณ
แอนดรู

19

ฉันได้ลองตัวแปลงสัญญาณหลาย ๆ ตัวและพวกมันก็ลบน้อยเกินไปหรือมากเกินไป

รหัสนี้จะลบช่องว่างที่ซ้ำซ้อนและแท็ก HTML (สิ้นสุด) ที่เป็นทางเลือก มันเล่นได้อย่างปลอดภัยและไม่ลบสิ่งที่อาจทำลาย HTML, JS หรือ CSS

รหัสยังแสดงวิธีการทำเช่นนั้นใน Zend Framework:

class Application_Plugin_Minify extends Zend_Controller_Plugin_Abstract {

  public function dispatchLoopShutdown() {
    $response = $this->getResponse();
    $body = $response->getBody(); //actually returns both HEAD and BODY

    //remove redundant (white-space) characters
    $replace = array(
        //remove tabs before and after HTML tags
        '/\>[^\S ]+/s'   => '>',
        '/[^\S ]+\</s'   => '<',
        //shorten multiple whitespace sequences; keep new-line characters because they matter in JS!!!
        '/([\t ])+/s'  => ' ',
        //remove leading and trailing spaces
        '/^([\t ])+/m' => '',
        '/([\t ])+$/m' => '',
        // remove JS line comments (simple only); do NOT remove lines containing URL (e.g. 'src="http://server.com/"')!!!
        '~//[a-zA-Z0-9 ]+$~m' => '',
        //remove empty lines (sequence of line-end and white-space characters)
        '/[\r\n]+([\t ]?[\r\n]+)+/s'  => "\n",
        //remove empty lines (between HTML tags); cannot remove just any line-end characters because in inline JS they can matter!
        '/\>[\r\n\t ]+\</s'    => '><',
        //remove "empty" lines containing only JS's block end character; join with next line (e.g. "}\n}\n</script>" --> "}}</script>"
        '/}[\r\n\t ]+/s'  => '}',
        '/}[\r\n\t ]+,[\r\n\t ]+/s'  => '},',
        //remove new-line after JS's function or condition start; join with next line
        '/\)[\r\n\t ]?{[\r\n\t ]+/s'  => '){',
        '/,[\r\n\t ]?{[\r\n\t ]+/s'  => ',{',
        //remove new-line after JS's line end (only most obvious and safe cases)
        '/\),[\r\n\t ]+/s'  => '),',
        //remove quotes from HTML attributes that does not contain spaces; keep quotes around URLs!
        '~([\r\n\t ])?([a-zA-Z0-9]+)="([a-zA-Z0-9_/\\-]+)"([\r\n\t ])?~s' => '$1$2=$3$4', //$1 and $4 insert first white-space character found before/after attribute
    );
    $body = preg_replace(array_keys($replace), array_values($replace), $body);

    //remove optional ending tags (see http://www.w3.org/TR/html5/syntax.html#syntax-tag-omission )
    $remove = array(
        '</option>', '</li>', '</dt>', '</dd>', '</tr>', '</th>', '</td>'
    );
    $body = str_ireplace($remove, '', $body);

    $response->setBody($body);
  }
}

แต่โปรดทราบว่าเมื่อใช้การบีบอัด gZip โค้ดของคุณจะถูกบีบอัดให้มากขึ้นซึ่งการ minification ใด ๆ สามารถทำได้โดยการรวม minification และ gZip นั้นไม่มีจุดหมายเพราะเวลาที่บันทึกไว้โดยการดาวน์โหลดจะหายไปจากการลดขนาด

นี่คือผลลัพธ์ของฉัน (ดาวน์โหลดผ่านเครือข่าย 3G):

 Original HTML:        150kB       180ms download
 gZipped HTML:          24kB        40ms
 minified HTML:        120kB       150ms download + 150ms minification
 min+gzip HTML:         22kB        30ms download + 150ms minification

4
ใช่ฉันเห็นด้วยว่ามันดูเหมือนไร้จุดหมาย แต่ก็สามารถให้คะแนนคุณหนึ่งหรือสองจุดที่มีค่าใน pagespeed สำหรับ google ซึ่งเกี่ยวข้องกับการจัดอันดับ google ของคุณ รหัสของคุณสมบูรณ์แบบสำหรับการปอกช่องว่างที่ไม่จำเป็น ขอบคุณ :-)
Tschallacka

1
สิ่งนี้ใช้งานได้ดีมีปัญหากับ = "/" ดังนั้นฉันจึงเอา / ออกจาก '~ ([\ r \ n \ t])? ([a-zA-Z0-9] +) = "([a-zA -Z0-9 _ / \\ -] +) "([\ r \ n \ t])? s ~ = '' $ 1 $ 2 = $ 3 $ 4 $ ', // $ 1 และ $ 4 แทรกอักขระช่องว่างสีขาวตัวแรกที่พบก่อน / after attribute
Ask_io

อย่างที่มันเกิดขึ้นฉันไม่ต้องการลบช่องว่างเพื่อเพิ่มความเร็ว แต่เป็นเพราะนั่นคือสิ่งที่ HTML ควรทำทำเพื่อไม่ให้พลาดโดยสิ้นเชิงเช่นองค์ประกอบของบล็อกแบบอินไลน์ แต่ฉันก็กำลังมองหาคนที่มีความสามารถด้วย การเพิกเฉยต่อสิ่งที่ต้องมีช่องว่างหนึ่งช่องก่อนหรือหลัง (เช่นองค์ประกอบตัวหนาในบล็อกข้อความเป็นต้น)
Deji

ฉันพบปัญหากับสิ่งที่ Jquery / Foundation บางอย่าง ... ยกเว้นว่าฉันใส่เครื่องหมายบรรทัดต่อไปนี้: // ลบบรรทัด "ว่าง" ที่มีอักขระสิ้นสุดบล็อกของ JS เท่านั้น; เข้าร่วมกับบรรทัดถัดไป (เช่น "} \ n} \ n </script>" -> "}} </script>" // '/} [\ r \ n \ t] + / s' => '} ', //' /} [\ r \ n \ t] +, [\ r \ n \ t] + / s '=>'}, ',
เอียน

1
หากคุณใช้การแคชฝั่งเซิร์ฟเวอร์ (สำหรับฉัน Smarty V3) min + gzip เป็นทางออกที่ดียกเว้นในการโทรครั้งแรก ดังนั้นหากหลังจากการโทรที่ 15 จะเป็นการรบกวนเวลาเซิร์ฟเวอร์ rule = 40x15 = (30x15 + 150) แต่สำหรับการโทรครั้งที่สองมันจะเร็วขึ้นสำหรับผู้เยี่ยมชม
Meloman

6

งานนี้สำหรับฉัน

function Minify_Html($Html)
{
   $Search = array(
    '/(\n|^)(\x20+|\t)/',
    '/(\n|^)\/\/(.*?)(\n|$)/',
    '/\n/',
    '/\<\!--.*?-->/',
    '/(\x20+|\t)/', # Delete multispace (Without \n)
    '/\>\s+\</', # strip whitespaces between tags
    '/(\"|\')\s+\>/', # strip whitespaces between quotation ("') and end tags
    '/=\s+(\"|\')/'); # strip whitespaces between = "'

   $Replace = array(
    "\n",
    "\n",
    " ",
    "",
    " ",
    "><",
    "$1>",
    "=$1");

$Html = preg_replace($Search,$Replace,$Html);
return $Html;
}

5

สร้างไฟล์ PHP นอกรูทเอกสารของคุณ หากรูทเอกสารของคุณคือ

/var/www/html/

สร้างไฟล์ชื่อ minify.php หนึ่งระดับเหนือมัน

/var/www/minify.php

คัดลอกวางรหัส PHP ต่อไปนี้ลงไป

<?php
function minify_output($buffer){
    $search = array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s');
    $replace = array('>','<','\\1');
    if (preg_match("/\<html/i",$buffer) == 1 && preg_match("/\<\/html\>/i",$buffer) == 1) {
        $buffer = preg_replace($search, $replace, $buffer);
    }
    return $buffer;
}
ob_start("minify_output");?>

บันทึกไฟล์ minify.php และเปิดไฟล์ php.ini หากเป็นการค้นหาเซิร์ฟเวอร์ / VPS เฉพาะสำหรับตัวเลือกต่อไปนี้ในการโฮสต์ที่ใช้ร่วมกับ php.ini ที่กำหนดเองเพิ่ม

auto_prepend_file = /var/www/minify.php

การอ้างอิง: http://websistent.com/how-to-use-php-to-minify-html-output/



2

คุณสามารถดู HTML TIDY - http://uk.php.net/tidy

มันสามารถติดตั้งเป็นโมดูล PHP และจะ (อย่างถูกต้องปลอดภัย) ตัดช่องว่างและความน่ารังเกียจอื่น ๆ ทั้งหมดในขณะที่ยังคงส่งออกมาร์กอัป HTML / XHTML ที่ถูกต้องสมบูรณ์ มันจะทำความสะอาดโค้ดของคุณซึ่งอาจเป็นสิ่งที่ยอดเยี่ยมหรือเป็นสิ่งที่แย่มากขึ้นอยู่กับว่าคุณเขียนโค้ดที่ถูกต้องตั้งแต่แรก ;-)

นอกจากนี้คุณสามารถ gzip ผลลัพธ์โดยใช้รหัสต่อไปนี้ที่จุดเริ่มต้นของไฟล์ของคุณ:

ob_start('ob_gzhandler');

ปัญหาคือเว็บไซต์จะโฮสต์บนแชร์และฉันจะไม่สามารถเข้าถึงการติดตั้งโมดูลดังกล่าว
m3tsys

โอกาสที่มันจะถูกติดตั้งแล้ว ตรวจสอบphpinfo()... ที่อย่างน้อยที่สุดควรจะติดตั้งช่วยให้คุณสามารถใช้zlib ob_gzhandler
Rudi Visser

ฉันใช้แล้วif (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start();มันไม่เหมือนกันเหรอ?
m3tsys

2
ใช่คุณไม่ต้องการชิ้นelse ob_start()ส่วนหรือไม่ตรวจสอบ gzip ... ob_gzhandlerตรวจสอบว่าเบราว์เซอร์รองรับวิธีการบีบอัดใด ๆ ภายในหรือไม่ เพียงแค่มีob_start('ob_gzhandler');จะพอเพียง
ฤดี Visser

ความเป็นไปได้ที่ TIDY จะช้ากว่าคำตอบอื่น ๆ ที่นี่เพราะค่าใช้จ่ายในการแยกวิเคราะห์พิเศษ? อาจดีสำหรับการพัฒนา - จากนั้นคุณสามารถแก้ไขข้อผิดพลาด HTML เหล่านั้นในซอร์สโค้ดจริง - แต่ฉันถามว่านี่เป็นตัวเลือกที่ดีที่สุดสำหรับการผลิตหรือไม่
Matt Browne

2

ก่อนอื่น gzip สามารถช่วยคุณได้มากกว่า Html Minifier

  1. ด้วย nginx :

    gzip on;
    gzip_disable "msie6";
    
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  2. ด้วย apache คุณสามารถใช้ mod_gzip

ข้อที่สอง: ด้วย gzip + Html Minification คุณสามารถลดขนาดไฟล์ได้อย่างมาก !!!

ฉันสร้างHtmlMinifierนี้สำหรับ PHPแล้ว

composer require arjanschouten/htmlminifier dev-masterคุณสามารถเรียกดูได้ผ่านการแต่งเพลง:

มีผู้ให้บริการ Laravel หากคุณไม่ได้ใช้ Laravel คุณสามารถใช้งานได้จาก PHP

// create a minify context which will be used through the minification process
$context = new MinifyContext(new PlaceholderContainer());
// save the html contents in the context
$context->setContents('<html>My html...</html>');
$minify = new Minify();
// start the process and give the context with it as parameter
$context = $minify->run($context);

// $context now contains the minified version
$minifiedContents = $context->getContents();

อย่างที่คุณเห็นคุณสามารถขยายสิ่งต่าง ๆ มากมายที่นี่และคุณสามารถผ่านตัวเลือกต่าง ๆ ตรวจสอบ readmeเพื่อดูตัวเลือกที่มีทั้งหมด

นี้HtmlMinifierเสร็จสมบูรณ์และปลอดภัย ใช้เวลา 3 ขั้นตอนสำหรับกระบวนการลดขนาด:

  1. แทนที่เนื้อหาที่สำคัญชั่วคราวด้วยตัวยึดตำแหน่ง
  2. เรียกใช้กลยุทธ์การลดขนาด
  3. คืนค่าเนื้อหาต้นฉบับ

ฉันขอแนะนำให้คุณแคชผลลัพธ์ของมุมมองของคุณ กระบวนการลดขนาดควรเป็นกระบวนการหนึ่งครั้ง หรือทำมันสำหรับช่วงเวลาตัวอย่างตาม

ไม่มีการสร้างการวัดประสิทธิภาพที่ชัดเจนในเวลานั้น อย่างไรก็ตามตัวลดขนาดสามารถลดขนาดหน้าได้ 5-25% ตามมาร์กอัปของคุณ!

หากคุณต้องการเพิ่มคุณเป็นกลยุทธ์ของตัวเองคุณสามารถใช้addPlaceholderและaddMinifierวิธีการ


ขอบคุณสำหรับห้องสมุด คำแนะนำไม่ได้กล่าวถึงไฟล์ PHP ที่ฉันต้องการรวมไว้ ในที่สุดฉันก็จะคิดออก แต่นั่นคือสิ่งที่คุณควรเพิ่มในเว็บไซต์ของคุณ
rosewater

ดูเหมือนว่ามันยังต้องใช้ Illuminate \ Support \ Collection มันไม่ใช่โซลูชัน PHP แบบสแตนด์อะโลน
rosewater

ขอบคุณสำหรับความคิดเห็น! มันเป็นแพ็คเกจนักแต่งเพลง ฉันได้อัปเดต readmeด้วยกฎต่อไปนี้: require __DIR__ . '/vendor/autoload.php';สิ่งเดียวที่คุณต้องทำคือรวมไฟล์นี้ไว้ สิ่งนี้สร้างโดยนักแต่งเพลง!
ArjanSchouten

2

ฉันมีส่วนสำคัญของGitHub ที่มีฟังก์ชั่น PHP เพื่อย่อขนาดไฟล์ HTML, CSS และ JS → https://gist.github.com/taufik-nurrohman/d7b310dea3b33e4732c0

ต่อไปนี้เป็นวิธีย่อเอาท์พุต HTML แบบทันทีด้วยบัฟเฟอร์เอาต์พุต:

<?php

include 'path/to/php-html-css-js-minifier.php';

ob_start('minify_html');

?>

<!-- HTML code goes here ... -->

<?php echo ob_get_clean(); ?>

ลิงค์ส่วนสำคัญนำไปสู่หน้า 404
1111161171159459134

2
อัพเดทลิงค์
Taufik Nurrohman

1

หากคุณต้องการลบบรรทัดใหม่ทั้งหมดในหน้าให้ใช้รหัสอย่างรวดเร็วนี้:

ob_start(function($b){
if(strpos($b, "<html")!==false) {
return str_replace(PHP_EOL,"",$b);
} else {return $b;}
});

0

ขอขอบคุณที่แอนดรู นี่คือสิ่งที่ใช้เพื่อทำสิ่งนี้ในเค้ก PHP:

  1. ดาวน์โหลดminify-2.1.7
  2. คลายไฟล์และคัดลอกโฟลเดอร์ย่อยขั้นต่ำไปยังโฟลเดอร์ผู้ขายเค้ก
  3. สร้าง MinifyCodeHelper.php ในมุมมอง / ผู้ช่วยเค้กเช่นนี้:

    App::import('Vendor/min/lib/Minify/', 'HTML');
    App::import('Vendor/min/lib/Minify/', 'CommentPreserver');
    App::import('Vendor/min/lib/Minify/CSS/', 'Compressor');
    App::import('Vendor/min/lib/Minify/', 'CSS');
    App::import('Vendor/min/lib/', 'JSMin');
    class MinifyCodeHelper extends Helper {
        public function afterRenderFile($file, $data) {
            if( Configure::read('debug') < 1 ) //works only e production mode
                $data = Minify_HTML::minify($data, array(
                    'cssMinifier' => array('Minify_CSS', 'minify'),
                    'jsMinifier' => array('JSMin', 'minify')
                ));
            return $data;
        }
    }
  4. เปิดใช้งานตัวช่วยเหลือของฉันใน AppController

    ประชาชน $ helpers = array ('Html', '... ', 'MinifyCode');

5 ... วาลลา!

ข้อสรุปของฉัน: หากโมดูล Apache ยุบและส่วนหัวถูกปิดใช้งานในเซิร์ฟเวอร์ของคุณกำไรของคุณคือขนาดที่เล็กลง 21% และ 0.35s บวกกับการร้องขอให้บีบอัด (ตัวเลขนี้คือในกรณีของฉัน)

แต่ถ้าคุณเปิดใช้งานโมดูลของ apache การตอบสนองที่ถูกบีบอัดจะไม่แตกต่างกันอย่างมีนัยสำคัญ (1.3% สำหรับฉัน) และเวลาในการบีบอัดคือ samne (0.3s ถึงฉัน)

ดังนั้น ... ทำไมฉันถึงทำอย่างนั้น? 'กระตุ้นเอกสารของโครงการของฉันทั้งหมดในความคิดเห็น (php, css และ js) และผู้ใช้ขั้นสุดท้ายของฉันไม่จำเป็นต้องเห็นสิ่งนี้;)


0

คุณสามารถใช้ Java minifier ที่ผ่านการทดสอบอย่างดีเช่นHTMLCompressorโดยเรียกใช้passthru( exec)
อย่าลืมเปลี่ยนเส้นทางคอนโซลโดยใช้2>&1

อย่างไรก็ตามเรื่องนี้อาจไม่เป็นประโยชน์หากความเร็วเป็นสิ่งที่น่ากังวล ฉันใช้มันสำหรับการส่งออก php คงที่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.