কীভাবে পিএইচপি পৃষ্ঠা এইচটিএমএল আউটপুট ক্ষুদ্রতর করবেন?


143

আমি এমন একটি পিএইচপি স্ক্রিপ্ট বা শ্রেণীর সন্ধান করছি যা আমার পিএইচপি পৃষ্ঠার এইচটিএমএল আউটপুটকে গুগল পৃষ্ঠার গতির মতো নষ্ট করতে পারে।

কিভাবে আমি এটি করতে পারব?


14
@ রাকেশএস উত্তরের উপর ভিত্তি করে ওয়ান-লাইনার:ob_start(function($b){return preg_replace(['/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s'],['>','<','\\1'],$b);});
ফ্রান্সিসকো

5
পছন্দ করুন আপনি স্ক্রিপ্ট ট্যাগ, পূর্ব ট্যাগ, ইত্যাদি
ব্র্যাড

এটি সত্য, তাঁর উত্তরের মন্তব্যগুলিতে উল্লেখ করা হয়েছে এটি সঠিকভাবে কাঠামোর জন্য সাদা স্থান প্রয়োজন বলে এটি কাজ করে না <pre>বা <code>ট্যাগ করে না । তবে, এটি <script>সাধারণত বাহ্যিক হওয়া উচিত, বা ইনলাইন হওয়া উচিত তবে ;কঠোর উপায়ে ব্যবহার করা যাতে এটি কার্যকর হয়। এটি ব্র্যাড ভাঙতে পারে অন্য কোন ট্যাগগুলি? আমি অন্যের কথা ভাবতে পারি না। যদিও আমার আগের মন্তব্যের আগে আমার দ্রুত এবং নোংরা উপায় যুক্ত করা উচিত ছিল ।
ফ্রান্সিসকো প্রেজেনসিয়া

উত্তর:


212

সিএসএস এবং জাভাস্ক্রিপ্ট

জাভাস্ক্রিপ্ট / সিএসএস ফাইলগুলি মিনিফাই করতে নীচের লিঙ্কটি বিবেচনা করুন: https://github.com/mrclay/minify

এইচটিএমএল

আপাচে কে জিজেপ দিয়ে এইচটিএমএল সরবরাহ করতে বলুন - এটি সাধারণত প্রতিক্রিয়ার আকার প্রায় 70% হ্রাস করে। (আপনি যদি অ্যাপাচি ব্যবহার করেন তবে জিজিপ কনফিগার করা মডিউলটি আপনার সংস্করণের উপর নির্ভর করে: অ্যাপাচি ১.৩ মোড_জিজিপ ব্যবহার করছে, যখন অ্যাপাচি ২.x মোড_ডিফলেট ব্যবহার করে))

স্বীকৃতি-এনকোডিং: গিজিপ, ডিলেট করা

সামগ্রী-এনকোডিং: জিজিপ

সহায়তা__স্টার্ট এর বাফার সাহায্যে এইচটিএমএল থেকে সাদা স্পেসগুলি সরাতে নিম্নলিখিত স্নিপেটটি ব্যবহার করুন :

<?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
এটি একটি ভাল ফাংশন তবে আপনি সতর্কতা অবলম্বন করুন যদি আপনি পিআরই ট্যাগ ব্যবহার করেন তবে কখনও কখনও নতুন লাইনগুলি সেখানে সরিয়ে ফেলা হবে।
ফেডমিচ

2
আপনার স্ক্রিপ্টের শীর্ষে বা নীচে এই কোডটি কোথায় হওয়া উচিত?
jdepypere

8
আপনি সেই মিনিফাইবার লাইব্রেরি থেকে মিনিফাইটিএস ক্লাসটিও ব্যবহার $content = \Minify_HTML::minify($content);করতে পারেন ( , আপনি এমনকি ইনলাইন কোডের জন্য জেএস / সিএসএস মিনিফায়ারগুলিতে কলব্যাক যোগ করতে পারেন)। দেখুন github.com/mrclay/minify/blob/master/min/lib/Minify/HTML.php
Barryvdh

21
এটি ইনলাইন জাভাস্ক্রিপ্ট (যেমন <script>ট্যাগগুলিতে ) ও ভেঙে দেয় ;যা প্রতিটি বিবৃতি শেষে নেই বা মন্তব্যগুলির ব্যবহার রয়েছে//
কনস্ট্যান্টিন পেরিয়াস্লোভ

8
এটি টেক্সেরিয়া, প্রাক, ইনপুট, ইম্জি থেকে ফাঁকা স্থান সরিয়ে ফেলবে যা ইনলাইন জাভাস্ক্রিপ্টগুলিও ভেঙে দেয়। কেউ যদি রেগএক্সএক্সের উপর ভিত্তি করে এই সমাধানটি পার্সিংয়ের সাথে বিশাল শ্রেণীর ব্যবহার করতে খুশি না হন
পিটার

28

আপনি যদি এটি সঠিকভাবে করতে চান তবে জিজিপ চালু করুন। আপনি এই জাতীয় কিছু করতে পারেন:

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

এটি আপনার এইচটিএমএলকে এক লাইনে, কোনও ট্যাব, কোনও নতুন লাইন, কোনও মন্তব্য নয় size মাইলেজ বিভিন্ন হতে পারে


1
উভয়ই করা বাইটের পরিমাণ আরও কমিয়ে আনত।
নুতা

1
আসলে উভয়টিই জিজিপ করা সমান, k০০ কেবি পৃষ্ঠায় জিজিপ এটিকে প্রায় ৪০০ কিলোবাইটে নিয়ে যাবে এবং প্রিগ_রেপ্লেস () সামগ্রীর উপর নির্ভর করে) উভয়ই 399kb এর মতো হবে কারণ জিপ জিপগুলি একই স্থানগুলি সরিয়ে দেয় এবং তারপরে এটি সংকুচিত
dogmat69

18
এটি সম্ভাব্য বিপজ্জনক হতে পারে, যেহেতু এটি আই শর্তাদিও সরিয়ে ফেলবে ... - আপনার এটি পরিবর্তন করতে হবে / <<!
কাতাই

3
কাজ করে না, খুব বেশি সরিয়ে কোড গণ্ডগোল করে। এটি W3C এর আগে বৈধ ছিল এবং এর পরে এটি হয় না।
কোডবিট

3
দুর্ভাগ্যক্রমে, এটি গুগল ম্যাপের আরও জটিল বাস্তবায়ন তৈরির মতো জাভাস্ক্রিপ্ট কোডটিও ভেঙে দেয় - যা হ'ল আমার এইরকম একটি ফাংশন প্রয়োজন।
ধনী

19

preg_replace()উপরের সমস্ত সমাধানের মধ্যে একক লাইনের মন্তব্য, শর্তসাপেক্ষ মন্তব্য এবং অন্যান্য সমস্যা রয়েছে। আমি ভাল-পরীক্ষিত মিনিফাইটি প্রকল্পের সুবিধা নেওয়ার পরামর্শ দেব স্ক্র্যাচ থেকে আপনার নিজস্ব রেজেক্স তৈরি করার চেয়ে ।

আমার ক্ষেত্রে আমি পিএইচপি পৃষ্ঠার নীচে নীচের কোডটি এটিকে ছোট করার জন্য রেখেছি:

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
আপনার কোডটি এইচটিএমএলকে এক লাইনে রাখে না
করাদাই

মিনিফাইজ প্রকল্প এফএকিউ এ প্রথম প্রশ্নটি পড়ুন । টিএল; ডিআর: সেগুলি উপেক্ষা করুন।
অ্যান্ড্রু

আমি চেষ্টা করেছিলাম, এটি কাজ করে না। আমার আমার পিএইচপি ফাইলে, <স্টাইল> ট্যাগ এবং জাভাস্ক্রিপ্টের মধ্যে সিএসএস পিএসএফ এম্বেড করা হয়েছে <script> ট্যাগগুলির মধ্যে
জোও পাইমেন্তেল ফেরেইরা

আপনি এই কোডটি কোথায় রাখবেন? ফুটারে বা হেডারে শেষ?
ফ্রান্সেস্কো

@ ফ্রানসেসকো এটি আপনার পৃষ্ঠায় কোডের প্রথম অংশ হতে হবে।
অ্যান্ড্রু

19

আমি বেশ কয়েকটি মিনিফায়ার চেষ্টা করেছি এবং তারা হয় খুব কম বা খুব বেশি সরিয়ে দেয়।

এই কোডটি অপ্রয়োজনীয় খালি স্থান এবং alচ্ছিক এইচটিএমএল (সমাপ্তি) ট্যাগগুলি সরিয়ে দেয়। এছাড়াও এটি এটিকে নিরাপদে খেলে এবং এমন কোনও কিছু সরিয়ে দেয় না যা সম্ভাব্যভাবে এইচটিএমএল, জেএস বা সিএসএস ভঙ্গ করতে পারে।

এছাড়াও কোডটি জেন্ড ফ্রেমওয়ার্কে এটি কীভাবে করতে হবে তা দেখায়:

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);
  }
}

তবে নোট করুন যে জিজেপ কম্প্রেশন ব্যবহার করার সময় আপনার কোডটি অনেক বেশি সংকুচিত হয়ে যায় যে কোনও ক্ষুদ্রাকরণ মিনিফিকেশন এবং জিজেপকে একত্রিত করতে পারে তা অর্থহীন, কারণ ডাউনলোডের মাধ্যমে সাশ্রয় করা সময় ক্ষুদ্রাক্রমে হারিয়ে যায় এবং ন্যূনতমও সঞ্চয় করে।

এখানে আমার ফলাফল (3 জি নেটওয়ার্কের মাধ্যমে ডাউনলোড করুন):

 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
হ্যাঁ, আমি সম্মত হই যে এটি আপাতদৃষ্টিতে অর্থহীন, তবে এটি আপনাকে গুগলের জন্য পেজস্পিডে এক বা দুটি মূল্যবান পয়েন্ট স্কোর করতে পারে যা আপনার গুগল র‌্যাঙ্কিংয়ের জন্য প্রাসঙ্গিক। আপনার কোডটি অনিবদ্ধ জায়গা ফাঁকা করার জন্য উপযুক্ত perfect ধন্যবাদ :-)
তুষাল্লাকা

1
এটি দুর্দান্ত কাজ করে, = "/" নিয়ে সমস্যা ছিল তাই আমি '~ ([[r \ ​​n \ t]) এর / আউট নিয়েছি? ([a-zA-Z0-9] +) = "([a-zA -Z0-9 _ / \\ -] +) "([[\ r \ n \ t])? ~ S '=>' $ 1 $ 2 = $ 3 $ 4 ', // $ 1 এবং $ 4 আগে সাদা-স্পেস অক্ষর সন্নিবেশ করানো হয়েছে / বৈশিষ্ট্য পরে
জিজ্ঞাসা_ও

ঠিক যেমন এটি ঘটে আমি কেবল জিনিসগুলিকে গতি বাড়ানোর জন্য সাদা স্থান সরিয়ে ফেলতে চাইছি না, বরং এটি কারণ এই যে এইচটিএমএলটি কীভাবে সম্পূর্ণরূপে স্ক্রু আপ না ঘটে তার জন্য ইনলাইন ব্লক উপাদানগুলির মতো হওয়া উচিত , তবে আমি একজন সক্ষমকেও খুঁজছি এর আগে বা পরে যে জায়গাগুলির একটি জায়গা থাকা দরকার সেগুলি উপেক্ষা করা (উদাহরণস্বরূপ কোনও পাঠ্য ব্লকের সাহসী উপাদান)।
দেজি

আমি নির্দিষ্ট জ্যাকোয়ারি / ফাউন্ডেশন স্টাফ নিয়ে একটি সমস্যা পেয়েছি ... যতক্ষণ না আমি নীচের লাইনগুলি সম্পর্কে মন্তব্য করি: // কেবলমাত্র জেএস এর ব্লক শেষ অক্ষরযুক্ত "খালি" লাইনগুলি সরিয়ে ফেলুন; পরবর্তী লাইনে যোগ দিন (যেমন "} \ n} \ n </script>" -> "}} </script>" // '/} [\ r \ n \ t] + / s' => '} ', //' /} [\ r \ n \ t] +, [\ r \ n \ t] + / s '=>'}, ',
আয়ান

1
আপনি যদি সার্ভার সাইড ক্যাচিং ব্যবহার করেন (আমার জন্য স্মার্ট ভি 3) প্রথম কলটিতে ব্যতীত নূন্যতম + জিজিপ হ'ল একটি ভাল সমাধান। সুতরাং, যদি 15 তম কল করার পরে, এটি সার্ভার সময়ের জন্য আন্তঃসমাংস হবে। বিধি = 40x15 = (30x15 + 150) তবে দ্বিতীয় কলটির জন্য এটি ইতিমধ্যে দর্শকের জন্য দ্রুত হবে be
মেলোম্যান

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

আপনার ডকুমেন্টের মূলের বাইরে পিএইচপি ফাইল তৈরি করুন। যদি আপনার নথির মূলটি হয়

/var/www/html/

তার উপরে এক স্তর উপরে minify.php নামের একটি ফাইল তৈরি করুন

/var/www/minify.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 ফাইলটি খুলুন। যদি নীচের বিকল্পটির জন্য এটি ডেডিকেটেড সার্ভার / ভিপিএস অনুসন্ধান হয়, তবে কাস্টম php.ini এর সাথে ভাগ করে নেওয়া হোস্টিংয়ে এটি যুক্ত করুন।

auto_prepend_file = /var/www/minify.php

তথ্যসূত্র: http://websistance.com/how-to-use-php-to-minify-html-output/


3

আপনি ক্লাসের এই সেটটি পরীক্ষা করে দেখতে পারেন: https://code.google.com/p/minify/source/browse/?name=master#git%2Fmin%2Flib%2F মিনিফাই, আপনি এইচটিএমএল / সিএসএস / জেএস মিনিফিকেশন পাবেন সেখানে ক্লাস।

আপনি এটি ব্যবহার করে দেখতে পারেন: http://code.google.com/p/htmlcompressor/

শুভকামনা :)


2

আপনি HTML টিডিআইডি - http://uk.php.net/tidy এ সন্ধান করতে পারেন

এটি একটি পিএইচপি মডিউল হিসাবে ইনস্টল করা যেতে পারে এবং (সঠিকভাবে, নিরাপদে) স্ট্রিপ হোয়াইটস্পেস এবং অন্য সমস্ত ঘৃণ্যতা, এখনও পুরোপুরি বৈধ এইচটিএমএল / এক্সএইচটিএমএল মার্কআপ আউটপুট করে। এটি আপনার কোডও পরিষ্কার করবে, যা প্রথম স্থানে বৈধ কোড লিখতে আপনি কতটা ভাল তার উপর নির্ভর করে কোনও দুর্দান্ত জিনিস বা ভয়ঙ্কর জিনিস হতে পারে ;-)

অতিরিক্ত হিসাবে, আপনি আপনার ফাইলের শুরুতে নিম্নলিখিত কোড ব্যবহার করে আউটপুট gzip করতে পারেন:

ob_start('ob_gzhandler');

সমস্যাটি হ'ল সাইটটি শেয়ার করাতে হোস্ট করা হবে এবং এ জাতীয় মডিউলগুলি ইনস্টল করতে আমার অ্যাক্সেস থাকবে না।
m3tsys

সম্ভাবনা রয়েছে, এটি ইতিমধ্যে ইনস্টল করা হবে। চেক করুন phpinfo()... খুব কমপক্ষে zlibআপনাকে এটি ব্যবহারের অনুমতি দিয়ে ইনস্টল করা উচিত ob_gzhandler
রূদি দর্শক

আমি ইতোমধ্যে ব্যবহার if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start();করেছি এটি কি একই জিনিস নয়?
m3tsys

2
হ্যাঁ এটি হ'ল, আপনার সত্যিকার অর্থে else ob_start()অংশের দরকার নেই, না গিজিপ চেক ... ob_gzhandlerব্রাউজারটি অভ্যন্তরীণভাবে কোনও সংক্ষেপণ পদ্ধতি সমর্থন করে কিনা তা সনাক্ত করে। সহজভাবে থাকার ob_start('ob_gzhandler');যথেষ্ট হবে।
রুডি দর্শক

অতিরিক্ত পার্সিং ওভারহেডের কারণে এখানে অন্যান্য উত্তরগুলির তুলনায় পরিচ্ছন্ন হওয়ার কোনও সম্ভাবনা? উন্নয়নের জন্য ভাল হতে পারে - তবে আপনি প্রকৃত উত্স কোডে এইচটিএমএল ত্রুটিগুলি সংশোধন করতে পারেন - তবে আমি প্রশ্ন করি যে এটি যদি উত্পাদনের জন্য সেরা পছন্দ হয়।
ম্যাট ব্রাউন

2

সবার আগে gzip আপনাকে এইচটিএমএল মিনিফায়ারের চেয়ে বেশি সাহায্য করতে পারে

  1. এনগিনেক্স সহ :

    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. অ্যাপাচি দিয়ে আপনি Mod_gzip ব্যবহার করতে পারেন

দ্বিতীয়: জিজিপ + এইচটিএমএল মিনিফিকেশন দিয়ে আপনি ফাইলের আকার হ্রাস করতে পারবেন !!!

আমি এইচটিএমএল মিনিফায়ার পিএইচপি জন্য তৈরি করেছি

আপনি এটি সুরকারের মাধ্যমে পুনরুদ্ধার করতে পারেন: composer require arjanschouten/htmlminifier dev-master

একজন লারাভেল পরিষেবা প্রদানকারী রয়েছে। আপনি যদি লারাভেল ব্যবহার করছেন না তবে আপনি এটি পিএইচপি থেকে ব্যবহার করতে পারেন।

// 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();

আপনি দেখতে পাচ্ছেন যে আপনি এখানে প্রচুর পরিমাণে প্রসারিত করতে পারেন এবং আপনি বিভিন্ন বিকল্প পাস করতে পারেন। রিডমি পরীক্ষা করুনসমস্ত উপলব্ধ বিকল্প দেখতে করুন।

এই এইচটিএমএলমিনিফায়ার সম্পূর্ণ এবং নিরাপদ। এটি সংশোধন প্রক্রিয়াটির জন্য 3 টি পদক্ষেপ নেয়:

  1. স্থানধারকের সাথে সমালোচনামূলক সামগ্রী সাময়িকভাবে প্রতিস্থাপন করুন।
  2. মিনিফিকেশন কৌশল চালান।
  3. আসল সামগ্রীটি পুনরুদ্ধার করুন।

আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি নিজের মতামতের আউটপুট ক্যাশে করবেন। সংশোধন প্রক্রিয়াটি এক সময়ের প্রক্রিয়া হওয়া উচিত। অথবা এটি অন্তরভিত্তিক উদাহরণস্বরূপ করুন।

সাফ মানদণ্ডগুলি তখন তৈরি হয় না। তবে মিনিফায়ার আপনার মার্কআপের উপর ভিত্তি করে পৃষ্ঠার আকার 5-25% দিয়ে হ্রাস করতে পারে!

আপনি যদি যুক্ত করতে চান তবে আপনার নিজস্ব কৌশল আপনি ব্যবহার করতে পারেন addPlaceholderএবং addMinifierপদ্ধতিগুলি।


লাইব্রেরির জন্য ধন্যবাদ। আমার কী পিএইচপি ফাইল অন্তর্ভুক্ত করতে হবে তা নির্দেশাবলীর মধ্যে নেই। আমি অবশেষে এটি বের করব, তবে এটি সম্ভবত আপনার ওয়েবসাইটে যুক্ত করা উচিত।
গোলাপ জল

দেখে মনে হচ্ছে এটি এখনও আলোকিত। সহায়তা \ সংগ্রহের প্রয়োজন। এটি একা পিএইচপি সমাধান নয়।
গোলাপ জল 16 ই

সাহায্য করার জন্য ধন্যবাদ! এটি একটি সুরকার প্যাকেজ। আমি নিম্নলিখিত নিয়মের সাথে রিডম আপডেট করেছি : require __DIR__ . '/vendor/autoload.php';কেবলমাত্র এই ফাইলটি অন্তর্ভুক্ত করা উচিত। এটি সুরকার দ্বারা উত্পন্ন!
আরজানচৌটেন

2

আমার কাছে একটি গিটহাবের সংক্ষেপে এইচটিএমএল, সিএসএস এবং জেএস ফাইলগুলি মিনিফাই করার জন্য পিএইচপি ফাংশন রয়েছে → https://gist.github.com/taufik-nurrohman/d7b310dea3b33e4732c0

আউটপুট বাফার দিয়ে ফ্লাইতে এইচটিএমএল আউটপুট কীভাবে ছোট করবেন তা এখানে রয়েছে:

<?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
লিঙ্কটি আপডেট করেছেন।
তৌফিক নূররোহমান

1

আপনি যদি পৃষ্ঠার সমস্ত নতুন লাইন মুছে ফেলতে চান তবে এই দ্রুত কোডটি ব্যবহার করুন:

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

0

অ্যান্ড্রু ধন্যবাদ । কেক পিএইচপিতে এটি কী ব্যবহার করেছে তা এখানে দেখুন:

  1. মিনিফাইটি -২.১..7 ডাউনলোড করুন
  2. ফাইলটি আনপ্যাক করুন এবং মিনিট সাবফোল্ডারটিকে কেকের ভেন্ডর ফোল্ডারে অনুলিপি করুন
  3. মিনিটকোডহেল্পার.এফপি তৈরি করে কেকের ভিউ / সহায়ক হিসাবে এটি:

    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 এ আমার সহায়ক সক্ষম করে

    পাবলিক $ হেল্পার্স = অ্যারে ('এইচটিএমএল', '...', 'মিনিফাইড কোড');

5 ... ভয়েলা!

আমার উপসংহার: যদি আপনার সার্ভারে অ্যাপাচি-এর ডিফল্ট এবং শিরোনামের মডিউলগুলি অক্ষম করা হয় তবে আপনার লাভটি 21% কম আকার এবং 0.35 এর চেয়ে বেশি সংকোচনের অনুরোধে (এই সংখ্যাগুলি আমার ক্ষেত্রে ছিল)।

তবে আপনি যদি অ্যাপাচের মডিউলগুলি সক্ষম করে থাকেন তবে সংকুচিত প্রতিক্রিয়াটির কোনও তাত্পর্যপূর্ণ পার্থক্য নেই (আমার কাছে 1.3%) এবং সংকোচন করার সময়টি হচ্ছে সামেন (আমার কাছে 0.3.s)।

তো ... আমি কেন এমন করলাম? 'আমার প্রকল্পের ডকটি সমস্ত মন্তব্যগুলিতে রয়েছে (পিএইচপি, সিএসএস এবং জেএস) এবং আমার চূড়ান্ত ব্যবহারকারীর এটি দেখার দরকার নেই;)


0

আপনি এটি ব্যবহার করে ( ) ব্যবহার করে HTMLCompressor এর মতো একটি ভাল পরীক্ষিত জাভা মিনিফায়ার ব্যবহার করতে পারেন । কনসোল ব্যবহার করে পুনর্নির্দেশ করতে ভুলবেন নাpassthruexec
2>&1

গতি যদি উদ্বেগজনক হয় তবে এটি কার্যকর নাও হতে পারে। আমি এটি স্ট্যাটিক পিএইচপি আউটপুট জন্য ব্যবহার করি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.