1. Merhaba Ziyaretçi foruma kayıt olarak hediye kodu alabilirsin!
  2. Merhaba Ziyaretçi ! IP: play.LifeMCServer.com SkyBlock Sürüm: 1.7.X-1.8.X Senide aramızda görmek isteriz.
    Duyuruyu Kapat

DeferPHP ile Site Optimizasyonu: PHP, HTML, JS, CSS

'HTML, PHP, CSS, JS' forumunda TheDark_Gamer tarafından 17 Kasım 2020 tarihinde açılan konu

  1. TheDark_Gamer

    TheDark_Gamer Developer & Owner
    Sunucu Sahibi Forum Kurucusu

    Katılım:
    19 Mart 2017
    Mesaj:
    1.898
    Beğenilmeler:
    3.765
    DeferPHP ile site Optimizasyonu: PHP, HTML, JS, CSS

    DeferPHP, HTML çıktısı tarayıcıya/kullanıcıya gönderilmeden önce içerisindeki verileri Brotli/GZIP ile sıkıştırdıktan sonra,

    HTML'yi minify (küçültme işlemi) ediyor,

    Daha sonra JS, CSS, resimler gibi şeyleri de sıkıştırıp lazyload (sonradan yükleme) olarak ayarlıyor.

    Nasıl kullanılır

    DeferPHP'yi composer ile kurmanız gerek. Bunun için htttpdocs klasörüne bir composer.json dosyası oluşturun.

    Örnek composer.json dosyası:


    Kod (Text):
    1. {
    2.   "require": {
    3.     "shinsenter/defer.php": "1.*"
    4.   }
    5. }


    Ardından Plesk/CPanel veya SSH üzerinden composer.json dosyanızı işletip composer.lock oluşturtmanız ve defer.php kütüphanesini yükletmeniz gerek.

    Bunu yapmak için dosyayı oluşturduktan sonra aşağıdaki adımları takip edin. Ben Plesk için anlatacağım ama bir çok diğer panel de composer desteği sunuyor.

    1. PHP Composer'a basın

    upload_2020-11-17_0-25-5.png

    2. Gelen ekranda yenile'ye basın. Ardından yükle'ye, ondan sonra da güncelle'ye basın.

    upload_2020-11-17_0-26-56.png

    Kurulduktan sonra sizde de yukarıdaki gibi 1.0.18 olarak (konuyu yazarken ki son sürüm bu, daha yeni bir sürüm var ise o yazar) gözükecektir.

    Ardından sitenizin ana klasöründe defer.php adında bir dosya oluşturup aşağıdakileri yapıştırın:

    PHP:
    Hepsini Seç
    1. $useDeferPhp = true;
    2. $compression = "none";
    3.  
    4. if ($useDeferPhp) {
    5.     require_once $_SERVER["DOCUMENT_ROOT"] . "/vendor/shinsenter/defer.php/defer.php";
    6.  
    7.     function ob_deferphp_handler($html) {
    8.         if (function_exists("ob_brotli_handler")) {
    9.             $br = ob_brotli_handler($html);
    10.  
    11.             if (isset($br) && $br !== false) {
    12.                 $html = $br;
    13.  
    14.                 global $compression;
    15.                 $compression = $compression . "-br";
    16.             }
    17.         } else if (function_exists("ob_gzhandler")) {
    18.             $gzip = ob_gzhandler($html, PHP_OUTPUT_HANDLER_FINAL);
    19.  
    20.             if (isset($gzip) && $gzip !== false) {
    21.                 $html = $gzip;
    22.  
    23.                 global $compression;
    24.                 $compression = $compression . "-gzip";
    25.             }
    26.         }
    27.  
    28.         $defer = new \shinsenter\Defer();
    29.         return $defer->fromHtml($html)->toHtml();
    30.     }
    31. }
    32.  
    33. $called = false;
    34.  
    35. function compress() {
    36.     global $called;
    37.     global $compression;
    38.  
    39.     if (!$called) {
    40.         global $useDeferPhp;
    41.         if (!$useDeferPhp || !function_exists("ob_deferphp_handler") || !ob_start("ob_deferphp_handler")) {
    42.             if (!function_exists("ob_brotli_handler") || !ob_start("ob_brotli_handler")) {
    43.                 if(!function_exists("ob_gzhandler") || !ob_start("ob_gzhandler")) {
    44.                     if (!ob_start()) {
    45.                         exit("Compression error: no handler available");
    46.                     } else {
    47.                         $compression = "deflate";
    48.                     }
    49.                 } else {
    50.                     $compression = "gzip";
    51.                 }
    52.             } else {
    53.                 $compression = "br";
    54.             }
    55.         } else {
    56.             $compression = "deferphp";
    57.         }
    58.         $called = true;
    59.     }
    60. }

    DeferPHP'yi kapatıp sadece Brotli/GZIP/Deflate sıkıştırması kullanmak için $useDeferPhp = true; kısmındaki true'yı false yapabilirsiniz.

    Şuanda hangi sıkıştırma yönteminin kullanıldığını görmek için global $compression; echo $compression; yapabilirsiniz. (olası değerler: "deferphp-brotli", "deferphp-gzip", "deferphp", "br", "gzip", "deflate", "none")

    deferphp-brotli DeferPHP + Brotli,
    deferphp-gzip DeferPHP + GZIP

    Eğer sadece deferphp, none veya deflate dönüyorsa hostinginiz Brotli veya GZIP desteklemiyordur.

    Konu sonu

    Sonraki konularda görüşmek üzere!
     
    AssassinDaan bunu beğendi.

Bu Sayfayı Paylaş

Bu Konuya Bakan Kullanıcılar (Kullanıcı: 0, Ziyaretçi: 0)