Php ile CSS Kodlarını Sıkıştırma

Php mehmetkpln18 25 Ekim 2020

İlk önce bu Php ile CSS Kodlarını Sıkıştırma işleminin faydasından bahsedelim. Sıkıştırma sayesinde css dosya boyutunda ciddi derecede azalma görülebilir. Bu da sayfaların yüklenmesinde önemli ölçüde hızlanma sağlanması demektir ki bu da Google ‘nin sevdiği şeylerden

Peki bu sıkıştırma işlemi nedir? Bu işlem css dosyasında kullanılan yorum satırlarını, satırlar arası boşluğu ve kelimeler arasındaki bir karakterden fazla olan gereksiz boşlukları silme işlemidir.

Sıkıştırma işlemini yaparken css dosyasının orjinal hali üzerinde bir değişiklik yapmayacağız yani siz yine normal kodlamanıza devam edeceksiniz. Sadece php dosyası ile gereksiz karakterleri replace edeceğiz ve css dosyamızı php dosyamıza include edeceğiz. Yani içine aktaracağız. Bunun için style.php adında bir dosya oluşturalım ve içine aşağıdaki kodları yazalım.

<?php 
header('Content-type: text/css'); //Dosyanın bir css dosyası olduğunu tanımlıyoruz.

function compress($buffer) {
    if(trim($buffer) === "") return $buffer;
    return preg_replace(
        array(
            // Yorum satırlarını siliyoruz
            '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s',
            // Kullanılmayan beyaz boşlukları kaldırın
            '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si',
            // "0 (cm | em | ex | in | mm | pc | pt | px | vh | vw |%)` yerine "0" yazalım
            '#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si',
            // ": 0 0 0 0" 'ı ": 0" ile değiştirin
            '#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i',
            // "Arka plan konumu: 0" 'ı "arka plan konumu: 0 0" ile değiştirelim
            '#(background-position):0(?=[;\}])#si',
            // "0.6" 'yı ".6" ile değiştirelim, ancak yalnızca önünde ":", ",", "-" veya beyaz boşluk varsa
            '#(?<=[\s:,\-])0+\.(\d+)#s',
            // Dize değerini küçültelim
            '#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si',
            '#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si',
            // HEX renk kodunu küçültelim
            '#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i',
            // "(Border | anahat): yok" u "(border | anahat): 0" ile değiştirelim
            '#(?<=[\{;])(border|outline):none(?=[;\}\!])#',
            // Boş seçicileri kaldır
            '#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s'
        ),
        array(
            '$1',
            '$1$2$3$4$5$6$7',
            '$1',
            ':0',
            '$1:0 0',
            '.$1',
            '$1$3',
            '$1$2$4$5',
            '$1$2$3',
            '$1:0',
            '$1$2'
        ),
    $buffer);
}


ob_start("compress");
 
include('admin/assets/css/custom.css'); //Css dosyamızı include ediyoruz.
 
ob_end_flush();
?>

Bu işlemden sonra php dosyamız artık bir css dosyası gibi görüntülenecektir. Css dosyamızı şu şekilde çağırabiliriz :

<link rel="stylesheet" href="style.php">

Sonuçta php dosyamızın tipine text/css demiştik. Yani php dosyamız tamamen bir css dosyası gibi davranacaktır. Ama yine de style.php değilde style.css şeklinde dosyanızı çağırmak isterseniz htaccess dosyanızda :

RewriteEngine On
RewriteRule ^style.css$ style.php [NC,L]

şeklinde bir url rewrite işlemi yaparak css dosyanızı şu şekilde çağırabilirsiniz.

<link rel="stylesheet" href="style.css">

Yazımızın sonuna geldik yapamadığınız kısım olursa yorum bırakabilirsiniz.

#Compress #CSS Kodlarını Sıkıştırma #Php #PHP CSS Sıkıştırma
Bir yorum bırak
Mail adresiniz kimseyle paylaşılmayacaktır.

  • Kategoriler