Laravel Üzerinde Gzip İşlemi

Laravel Üzerinde Gzip İşlemi

Hepinize merhaba dostlarım 😊. Uzun soluklu ve bir o kadar da bol kodlu geçe bir haftanın karşsıında tekrardan sizlerleyim 😊. Biliyorsunuz blog yazmak benim için bir honi haline gelmiş bulunmakta ve her pazar elimden geldiğince o hafta içerisinde kullandığım bazı işlemleri sizlerle paylaşmayı istiyorum ve bunun için günümü planlıyorum 😊.

Bu haftaki yazıma gelecek olursak bir zamanlar paylaşmıl olduğum "PHP ile GZIP İşlemi (Link Burada)" olayını Laravel üzerinde gerçekleştireceğiz 😊. Yapan dostlarım aramızda illa ki vardır bunda şüphem yok ama bazı dostlarımın aklında olan şeyleri tahmin ediyorum. Aynen şu şekilde düşünebiliyorlar ki ben de ilk başta o şekilde düşündüm

Core PHP üzerinde tamam bir şekilde yapıyoruz da hocam Laravel üzerinde ek bir kütüpane veya servis mi eklememiz gerekiyor composer ile ? Karmaşık olacak gibi bir his var

şeklinde bir düşünce elbette olabiliyor dostlarım. Ben de bunun cevabını hemen sizlere vereyim 😊

Sakin olun ve panik yapmayın dostlarım 😊. Ufak bir middleware yazcaz ve her şey yoluna girecek panik yok 😊

her zamanki klasik cevabı aslında dostlarım 😊. Sorunları büyük bir şekilde karşılaayın çözebilirim şeklinde algılayın gerisi hızlı şekilde gelir 😊. O halde sözü daha fazla uzatmadan laravel üzerinde gzip olaylarına girişimizi gerçekleştirelim

Laravel Üzerinde Gzip İşlemi

Eveeeet dostlarım artıkkodlama kısmımıza yavaştan girmiş bulunmaktayız 😊. Öncelikle cmd ekranımızı açıp 

laravel new gzip

şeklinde komutumuzu yazalım. He bu arada gzip için projenizin ismini gzip falan demeyin ben tamamen örnek olarak yazdım siz istediğiniz ismi koyabilirsiniz buna takılı kalmayın dostlarım aman diyim 😅. 

Laravel projemiz kurulduktan sonra ise dostlarım proje ana dizinimiz üzerinde terminalimizi açıp (PHPStorm gibi IDE kulalnıyorsanız size otomatik olarak bu yolu açacaktır dostlarım)

php artisan make:middleware GzipMiddleware

şeklinde bir ara katman oluşturalım. Bu komutu yazdıktan sonra ise dostlarım bizim rotasyonlarımızda kullanmamız için bunu uzun uzun kullanmamız yerine bir alias (Yani takma isim koycaz ve o şekilde çağırcaz) tanımlaması yapalım. Bunun için ise dostlarım app/Http/Kernel.php altına gidelim ve

<?php
.
.
.
.

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

        "gzip" => GzipMiddleware::class, // gzip middleware tanıtımını yapalım
    ];

şeklinde RouteMiddleware alanına gzip alias tanımlamasını yapalım. Bu kısmı da ayarladıktan sonra ise dostlarım oluşturduğumuz GzipMiddleware içerisine kodlarımızı yazalım.

<?php
.
.
.
.
public function handle($request, Closure $next)
    {
        $response = $next($request);
        $buffer = $response->getContent();
        if(strpos($buffer,'<pre>') !== false)
        {
            $replace = array(
//                '/<!--[^\[](.*?)[^\]]-->/s' => '',       mea taglerinde hata çıkmaması için yorum satırına aldık
                "/<\?php/"                  => '<?php ',
                "/\r/"                      => '',
                "/>\n</"                    => '><',
                "/>\s+\n</"                 => '><',
                "/>\n\s+</"                 => '><',
            );
        }
        else
        {
            $replace = array(
//                '/<!--[^\[](.*?)[^\]]-->/s' => '',       meta taglerinde hata çıkmaması için yorum satırına aldık
                "/<\?php/"                  => '<?php ',
                "/\n([\S])/"                => '$1',
                "/\r/"                      => '',
                "/\n/"                      => '',
                "/\t/"                      => '',
                "/ +/"                      => ' ',
            );
        }
        $buffer = preg_replace(array_keys($replace), array_values($replace), $buffer);
        $response->setContent($buffer);
        ini_set('zlib.output_compression', 'On'); // If you like to enable GZip, too!
        return $response;
    }

yukarıdaki kodları dostlarım handle fonksiyonumuzun içerisine yazmamız gerekmektedir dostlarım. Yani yukarıdaki kodları direkt olarak kopyalalmak yerine handle() fonksiyonunun içeriğini almanız sizin için uygun olur 😊. Bu kısmı da ayarladığımıza göre dostlarım geriye ufak bir işlem kaldı.

Harici olarak bir sayfa oluşturmamıza gerek yok dostlarım olayın mantığını anlatmak istiyorum sadece 😊. Normalde Laravel ilk kurulduğunda bizi bir sayfa karşılar biliyorsunuz. O sayfa açıldığında CTRL+U yapıp kaynak kodlarına bir bakalım

şeklinde bize bir çıktı geliyor. Hemen hemen her web sayfasında bununla karşılaşır vaziyetteyiz 😊. İşte şu an öyle bir nokta atışı yapcaz ki kodlar sıkıştırılmış vaziyette ekranımıza gelecek. Bunun için hemen web.php dosyamıza gelelim ve

<?php
.
.
.
.
Route::get('/', function () {
    return view('welcome');
})->middleware('gzip');  // gzip middleware kullanımını gerceklestirelim

şeklinde kodumuzu yazalım. Sayfamızı F5 ile yenilediğimizde karşımıza çıkacak olan sonuç

şeklinde tek satır olacaktır. Ve sayfa analizleri yapma sırasında özellikle de SEO uyumlu bir web sitesi yapacaksanız bu işlem sizin oldukça işinize yarayacaktır 😊.

 

Eveeeeet dostlarım 😊. Bu yazımda sizlere elimden geldiğince dilim döndüğünce "Laravel Üzerinde GZIP İşlemi" konusunu anlatmaya çalıştım. Umarım faydalı olmuşumdur. Eksik veya hatalı bir anlatım yapmış isem benimle iletişime geçmekten çekinmeyin 😊. Konu başlarda biraz karmaşık veya zor gelmiş olabilir anlıyorum. Özellikle öğrenme süreci içeriisnde bu gibi durumlarla karşılaşmanız son derece doğaldır. Bu süreç içerisinde sizlerden istediğim tek şey har yazımda da dediğim gibi "İstikrarlı ve Azimli Olmalısınız, Bolca Pratik Yapmalısınız 😊". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır 😊

Aynı zamanda 25 Aralık 2022 de kurmuş olduğum seyyaryazilimci.com soru cevap sitesi üzerinde yazılımda takıldığınız konuları sorabilir, aynı durumda olan yazılımcı dostlarımıza yardımda bulunabilirsiniz. Sorular ve cevaplar belirli bir süre admin onayından geçerek sistem üzerinde yayınlanmaktadır dostlarım bilginize 😊

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim 😊

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki Yazıİlk Vue.js Projemizi Oluşturalım
Sonraki YazıLaravel Middleware Kullanımı
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz