WordPress Sitelerini Hızlandırmak için GZIP Sıkıştırması Nasıl Etkinleştirilir
Web’de Veri Sıkıştırmanın Temelleri
Web üzerinde veri sıkıştırma, web siteleri tarafından iletilen verilerin boyutunu küçültme işlemidir. Veri türüne bağlı olarak (metin, resimler, stil sayfaları, komut dosyaları, yazı tipleri) verileri sıkıştırmanın çeşitli yolları vardır.
Bir web sayfasının ana bileşenleri
Örneğin , HTML, CSS ve JavaScript’in küçültülmesi, tarayıcılar tarafından gönderilen veri miktarını azaltmanın basit bir yoludur. Burada minifier , kaynak koddan yorumlar ve boşluklar gibi gereksiz karakterleri kaldırarak metni sıkıştırır .
Aşağıdaki basit bir HTML belgesi örneğinde , üç içerik türü vardır: HTML işaretlemesi, CSS stilleri ve JavaScript kodu.
Her içerik türünün benzersiz sözdizimi ve anlam bilgisi vardır. Genel olarak, bu HTML belgesinde toplam 357 karakter vardır.
Yukarıdaki kodun okunması ve izlenmesi kolaydır. Geliştirme için idealdir. Ancak, tarayıcının yorumları okuması ve mükemmel şekilde girintili etiketlere sahip olması gereksizdir. Akıllı bir kompresör bu belgeyi analiz edebilir ve tüm gereksiz bitleri ondan kaldırabilir.
Küçültme işleminden sonra, HTML belgesi yalnızca 141 karaktere indirilir. Bu , karakter sayısında % 60.50 tasarruf demektir . Gözler için o kadar kolay değil ama tarayıcı için önemli değil. Yine aynı sayfayı kullanıcıya gösterecektir.
Her iki sürümden de yararlanmak için, orijinal belgeyi bir “geliştirme sürümü” olarak koruyabilir, ancak yayınlamadan önce tüm kodu küçültebilirsiniz.
Çoğu WordPress performans eklentisi bunu sizin için otomatik olarak halleder.
Sıkıştırılmamış ve küçültülmüş jQuery’nin dosya boyutu sıkıştırması
Örnek olarak, jQuery 3.5.1 kitaplığının sıkıştırılmamış sürümü , aynı dosyanın küçültülmüş sürümünden 3 kat daha büyüktür.
Benzer şekilde, yukarıda açıklanan aynı sıkıştırma teknikleri, görüntüler, videolar, yazı tipleri ve daha fazlası gibi diğer içerik türlerini optimize edebilir. Bunlar gibi içeriğe özgü indirimler, web sitenizin metin tabanlı varlıklarının boyutunu optimize etmenin ilk adımıdır.
Ancak veri sıkıştırmada küçültmeden daha fazlası var. Gelişmiş matematik tekniklerini kullanarak, veri sıkıştırma algoritmaları veri boyutunu daha da azaltabilir.
Böyle bir veri sıkıştırma yönteminin en popüler örneklerinden biri GZIP’dir . Verimli veri iletimi sağlar ve interneti uygulanabilir bir küresel iletişim ortamı haline getirmeye önemli ölçüde katkıda bulunmuştur.
GZIP Sıkıştırma Nedir?
GNU Zip’in kısaltması olan GZIP, web’deki en popüler kayıpsız veri sıkıştırma yöntemidir. Sitenizin HTML sayfalarının, stil sayfalarının ve komut dosyalarının boyutunu azaltmanıza olanak tanır.
Bir veri sıkıştırma algoritması olmanın yanı sıra, GZIP aynı zamanda bir dosya uzantısıdır ( .gz ) ve dosya sıkıştırma / açma için kullanılan bir yazılımdır.
LZ77 kodlama ve Huffman kodlama algoritmalarının bir karışımı olan DEFLATE algoritmasına dayanmaktadır .
GZIP sıkıştırması, DEFLATE algoritmasına dayanır
Bir GZIP sıkıştırıcı, bir dizi ham veriyi alır ve kayıpsız bir şekilde sıkıştırır. Ham veriler herhangi bir dosya türünden olabilir, ancak GZIP en iyi metin tabanlı varlıklarla (ör. HTML, CSS, JS) çalışır.
Bir sonraki bölüm, GZIP sıkıştırmanın derinlemesine nasıl çalıştığını kapsamaktadır.
GZIP Verileri Nasıl Sıkıştırır
GZIP sıkıştırmasının nasıl çalıştığına dair kabaca bir örnek
Başlangıç olarak, GZIP sıkıştırıcı fazlalıkları ortadan kaldırmak için ham veriler üzerinde LZ77 sıkıştırma algoritmasını çalıştırır . Bu algoritma, önceden tanımlanmış bir kayan pencerede (ham verilerin küçük bir bölümü) tekrarlanan kalıpları bularak çalışır.
Ardından, ham verileri sıkıştırmak için tüm yinelenen dizeleri tuple’larla değiştirir.
LZ77 kodlama algoritmasının bir örneği
Yukarıdaki örnekte, kayan pencere boyutu sadece 13 karakter uzunluğundadır (13 bayt). Ancak, GZIP sıkıştırması maksimum 32 KB (32.768 bayt) kayan pencere boyutu kullanabilir. Kayan pencerenin boyutu, LZ77 sıkıştırma performansında önemli bir rol oynar.
Ham verileri LZ77 algoritmasıyla sıkıştırdıktan sonra, GZIP sıkıştırıcı daha sonra sıkıştırmak için Huffman kodlama algoritmasını kullanır . Bunu, daha sık ortaya çıkan karakterleri en az sayıda bit atarken, nadir karakterlere en yüksek bit sayısını atayarak yapar.
Bu teknik, Mors alfabesinde kullanılana benzer, burada İngiliz dilinde daha sık görülen harfler en kısa dizileri alır.
Huffman kodlama algoritmasının nasıl çalıştığını anlamak için kelimeyi düşünün BOOKKEEPER
. 10 karakter uzunluğunda, ancak yalnızca 6 benzersiz karaktere sahip. Bu kelime, tek, çift ve üçlü harflerin iyi bir karışımına sahiptir.
Hemen hemen tüm web siteleri , harfleri ve sembolleri temsil etmek için UTF-8 karakter kodlamasını kullanır. İngiliz alfabesini de içeren UTF-8’deki her ASCII karakteri 1 bayt (8 bit) kullanır.
“BOOKKEEPER” kelimesinde birçok tekrar eden harf var
10 karakterlik bir dize BOOKKEEPER
, 10 bayt (80 bit) bellek gerektirir. Bunu harflerin 1 örneğini içeren görebilirsiniz , harflerin 2 örneklerini ve ve harfin 3 örneklerini .B, P, R
O
K
E
Huffman kodlama algoritması, dizeyi kayıpsız bir şekilde sıkıştırmak için bu bilgiyi kullanır. Bunu, yaprak olarak her benzersiz harfle bir ikili ağaç oluşturarak yapar.
En düşük frekanslı harfler (örn. B , P , R ) kendilerini ağacın dibinde bulurken, sık görülen harfler (örn. E , O , K ) ideal olarak kendilerini en üstte bulacaktır.
Ağacın en üst düğümdür kök ve değeri dizesinde toplam karakter sayısına eşittir.
“BOOKKEEPER” kelimesi için Huffman Ağacı
Huffman ağacını oluşturduktan sonra, tüm sol dallanma ve sağ dallanma oklarına sırasıyla 0 ve 1 numara verilir. Daha sonra kök-to-yaprak yolunu izleyip, bütün katılarak herhangi bir karakter için Huffman kodu oluşturabilirsiniz 0 s ve 1 s.
Huffman kodları, her karakter için benzersiz ikili kodlardır
En yüksek frekansa sahip harflerin en küçük bit boyutlarına sahip Huffman kodlarına sahip olduğunu fark edebilirsiniz.
Not: Huffman kodlama algoritması, aynı frekanslara sahip karakterler için farklı bir sıralama stratejisi kullanarak alternatif ikili kodlar oluşturabilir. Bununla birlikte, kodlanmış dizenin toplam boyutu aynı kalacaktır.
25 bitlik bir dizi olarak kodlanmış 80 bitlik bir kelime
Bu , orijinal kelimeyi depolamak için gereken bellekte % 68,75’lik bir azalma demektir.
İle Huffman ağacı kullanarak 0 / 1 kongre tatmin ikili kodları oluşturur önek özelliği . Herhangi bir özel karakterin Huffman kodunun başka herhangi bir karakterin kodunun öneki olmamasını sağlayarak kodlanmış dizenin Huffman ağacını kullanarak çözülmesini kolaylaştırır. Bu, GZIP dekompresyon hızında birincil bir rol oynar.
Yukarıdaki kelimede olduğu gibi, GZIP sıkıştırıcı, LZ77 algoritması tarafından oluşturulan tupl’leri daha da optimize etmek için Huffman kodlama algoritmasını kullanır. Bu, .gz uzantılı yüksek oranda sıkıştırılmış dosyalar ile sonuçlanır .
GZIP’in nasıl çalıştığı hakkında daha fazla bilgi edinmekle ilgileniyorsanız, hızlı bir genel bakış için bu videoya bakın .
GZIP Sıkıştırma Ne Kadar İyi?
Tipik olarak GZIP, küçük dosyalar için yaklaşık% 70’lik bir sıkıştırma oranına ulaşır, ancak daha büyük metin tabanlı varlıklar için% 90’a kadar ulaşabilir.
Bazı popüler CSS ve JS kitaplıkları için GZIP sıkıştırma oranları
Yukarıdaki tabloda, küçültülmüş dosyaları GZIP ile sıkıştırmanın boyutlarını daha da küçültebileceğini görebilirsiniz.
Not: GZIP ile herhangi bir dosya türünü sıkıştırabilirsiniz, ancak zaten diğer yöntemlerle (ör. Resimler, videolar) sıkıştırılmış varlıklar için bu herhangi bir tasarruf sağlamaz. Bazen dosya boyutunu artırabilir.
Bir sıkıştırma algoritmasının gücü yalnızca sıkıştırma oranına değil, aynı zamanda verileri ne kadar hızlı ve verimli bir şekilde sıkıştırıp açabileceğine de bağlıdır. GZIP’in çoğu kullanım durumu için mükemmel olduğu yer burasıdır.
GZIP, bir akış algoritması kullanarak hızlı bir şekilde sıkıştırmayı açtığından, hızın çok önemli olduğu web protokolleri için mükemmel bir seçimdir. Ayrıca GZIP, verileri hem sıkıştırmak hem de sıkıştırmak için minimum kaynak kullanır, bu da onu hem sunucular hem de istemciler için ideal hale getirir.
Brotli – bzip2 – GZIP – xz sıkıştırma performansı (Kaynak: OpenCPU)
Yukarıdaki grafikler brotli , bzip2 , gzip ve xz sıkıştırma algoritmalarının sıkıştırma performansını karşılaştırır . GZIP, sıkıştırma oranı testinde küçük bir farkla kaybeder, ancak sıkıştırma ve açma hızları için rekabeti tamamen yener.
Sıkıştırma hızı grafiğine baktığımızda, GZIP’in HTTP sunucularında ve web’deki diğer veri akışlarında gerçek zamanlı sıkıştırma için ideal olduğu sonucuna varabiliriz. Web’i ilerletmenin tüm olumlu yönlerini göz önünde bulunduran IETF , GZIP’yi HTTP / 1.1’de sıkıştırma için üç standart formattan biri olarak onayladı .
Not: GZIP’nin zlib adlı sıkıştırma kitaplığının bir özeti, birçok popüler işletim sisteminde (Linux, macOS, iOS) ve modern oyun konsollarında (PlayStation 4, Wii U, Xbox One) kullanılmaktadır. Ayrıca görüntüleri sıkıştırmak için kayıpsız PNG dosya biçiminde de kullanılır.
GZIP Sıkıştırmanın 6 Avantajı
GZIP sıkıştırmanın en önemli avantajlarına daha yakından bakalım.
İyi Bir Sıkıştırma Oranı Sağlar
Daha önce tartışıldığı gibi, GZIP, rakibine kıyasla en iyi sıkıştırma oranına sahip değildir. Ama onlardan o kadar da uzak değil. Tipik olarak, metin tabanlı kaynakların boyutunu% 70-90 oranında azaltmanıza yardımcı olabilir.
Süper Hızlı Sıkıştırma ve Dekompresyon
Veri sıkıştırma ve açma hızları için GZIP açık ara kazanandır. HTTP sunucularında ve diğer veri akışlarında anında sıkıştırma için son derece arzu edilir.
Çok Az Bellek Gerektirir
GZIP, minimum bellek izi bırakarak, sınırlı bellek kapasitesine sahip sunucular ve sistemler için uygun hale getirir. Bu nedenle, en ucuz web barındırma sağlayıcıları tarafından bile desteklendiğini göreceksiniz .
En Kötü Durumlarda Bile Fazla Genişlemez
GZIP gibi kayıpsız veri sıkıştırma algoritmalarının, verileri sıkıştıramayacakları katı bir sınırı vardır.
Tipik olarak, bu, kaynak zaten iyi sıkıştırıldığında veya çok küçükse ve GZIP sözlüğünü eklemenin ek yükü sıkıştırma tasarrufundan daha yüksekse gerçekleşir. Bu fenomeni entropi kodlama denen bir kavrama bağlayabiliriz . GZIP bu etkiye karşı oldukça dirençlidir.
Ücretsiz Kullanım ve Açık Kaynak
GZIP, ilk Unix sistemlerinde kullanılan patentli sıkıştırma programının ücretsiz, açık kaynaklı bir alternatifi olarak yaratıldı . Bu nedenle, herhangi bir patentle yüklü değildir ve herkes tarafından özgürce kullanılabilir.
Evrensel Desteğe Sahiptir
W3Techs’e göre , GZIP sıkıştırması izledikleri tüm web sitelerinin % 82’si tarafından kullanılıyor ve bu da onu web’de en yaygın kullanılan sıkıştırma algoritması yapıyor.
GZIP, neredeyse tüm sunucular ve istemciler tarafından desteklenir. Sitenizi hangi sunucuda barındırdığınız önemli değil, üzerinde GZIP’i etkinleştirerek sitenizi hızlandırabilirsiniz.
Web Sitesi Hız Testi Araçlarında GZIP Uyarıları
Küçültmenin yanı sıra, GZIP’yi etkinleştirmek , web sitenize uygulayabileceğiniz en basit ve en etkili hız optimizasyonlarından biridir .
Ayrıca WordPress’i optimize etmenin en kolay yollarından biridir. Buna rağmen, birçok WordPress sitesi hala kullanmıyor.
Bir web sitesini ziyaret ettiğinizde, tarayıcınız content-encoding: gzip
yanıt başlığını kontrol ederek web sunucusunda GZIP’in etkin olup olmadığını kontrol eder . Başlık varsa, sıkıştırılmış dosyaları alır, sıkıştırmasını açar ve ardından daha küçük dosyaları size otomatik olarak sunar.
Tarayıcı GZIP yanıt başlığını algılamazsa, sıkıştırılmamış dosyaları indirir. Çoğu durumda, sayfa yükleme hızlarındaki fark birkaç saniye olabilir. Bu nedenle, GZIP’yi etkinleştirmediyseniz, web sitesi hız testi araçlarında uyarılar göreceksiniz .
Google PageSpeed Insights / Lighthouse’da GZIP Uyarısı
Google PageSpeed Insights , web sitenizde herhangi bir metin sıkıştırması etkinleştirilmediğinde bir uyarı verir.
Not: Google PageSpeed Insights ve Google Lighthouse, iki ayrı web sitesi performans test aracıdır. Google’ın , analiz motoru olarak Lighthouse’u kullanmak için PageSpeed Insights’ı yükselttiği 2018 yılına kadar birbirlerinden bağımsız olarak çalıştılar . Bu nedenle, PageSpeed Insights ve Lighthouse bir ve aynı şimdi.
Yukarıdaki örnek sitede, metin tabanlı kaynakları sıkıştırmak sayfa ağırlığını % 78’in üzerinde azaltabilir ve sayfa yükleme süresini 2,1 saniye hızlandırabilir .
Not: PageSpeed Insights, tarayıcınıza sunucu tarafından döndürülen yanıt başlıklarına dayanır. Bazen, GZIP sıkıştırmasını etkinleştirmiş olsanız bile yanlış bir uyarı gösterebilir. Bunun nedeni, ara proxy sunucusu veya güvenlik yazılımı kullanan bir makinede hız testinin çalıştırılması olabilir. Harici sunuculardan sıkıştırılmış dosyaların indirilmesine engel olabilirler.
GTmetrix’te GZIP Uyarısı
GTmetrix , web siteniz sıkıştırılmış metin tabanlı kaynaklar sunmuyorsa bir uyarı gösterir. Google PageSpeed Insights gibi, size elde edebileceğiniz potansiyel tasarrufları da gösterecektir.
GTmetrix’te “sıkıştırmayı etkinleştir” uyarısı
Not: GTmetrix, eski PageSpeed Insights ve YSlow kitaplıklarını en son Google Lighthouse ölçümleriyle değiştirmek için hız testi algoritmasını yükseltiyor . GZIP sıkıştırma uyarısının Lighthouse tarafından gösterilene benzer olmasını bekleyebilirsiniz.
Pingdom Araçlarında GZIP Uyarısı
Pingdom Tools , web sitesi bileşenlerinizi GZIP ile sıkıştırmak için basit bir uyarı verir.
Pingdom Araçlarında “GZIP ile bileşenleri sıkıştır” uyarısı
Açıklama bölümünde, Pingdom Araçları size GZIP’nin önemi hakkında da birkaç istatistik verir. Serin fasulye!
WebPageTest’te GZIP Uyarısı
WebPageTest , sıkıştırılabilir yanıtların en iyileştirilmiş şekilde sunulmadığını tespit ederse Performans İnceleme sekmesinde bir uyarı gösterir .
WebPageTest ayrıca bir uyarının ne kadar ciddi olduğunu göstermek için derecelendirilmiş bir puan verecektir. Örneğin, yukarıdaki uyarıyı 100 üzerinden 23 olarak derecelendirir, bu da onu öncelikli olarak düzeltmeniz gerektiği anlamına gelir.
GZIP Sıkıştırmasının Etkin Olup Olmadığını Kontrol Etme
Accept-Encoding: gzip, deflate
HTTP başlık olduğunu etkili bir şekilde tüm modern tarayıcılar tarafından desteklenen . Bu nedenle, çoğu web ana bilgisayarı, tüm sunucularında varsayılan olarak GZIP sıkıştırmasını etkinleştirir.
Web sunucuları bir tarayıcı tarafından gönderilen bu başlığı gördüklerinde, tarayıcının GZIP desteğini tanır ve content-encoding: gzip
başlık kullanarak sıkıştırılmış bir HTTP yanıtıyla yanıt verir .
Ancak başka bir WordPress barındırma sağlayıcısı kullanıyorsanız veya web sitenizin GZIP sıkıştırılmış içeriği düzgün bir şekilde sunup sunmadığını onaylamak istiyorsanız, her zaman etkin olup olmadığını kontrol edin.
Aşağıda, GZIP sıkıştırmasını kontrol etmenin birkaç basit yolu bulunmaktadır.
1. Çevrimiçi GZIP Sıkıştırma Testi Araçları
Web sitenizde GZIP sıkıştırmasının etkin olup olmadığını kontrol etmenin en kolay yolu çevrimiçi bir araç kullanmaktır. Ücretsiz Check GZIP Sıkıştırma veya HTTP Sıkıştırma Testi araçlarını kullanmanızı tavsiye ederim . Web sitenizin URL’sini girmeniz ve Kontrol Et veya Test Et düğmesine basmanız yeterlidir .
Bu çevrimiçi araçların her ikisi de size GZIP’in etkin olup olmadığı ve GZIP sıkıştırması etkinleştirilmiş test URL’sini sunarak kaydettiğiniz (veya kaydedebileceğiniz) veri aktarımı miktarı hakkında kısa bir rapor gösterecektir.
İlk araç, web sitenizin sunucu türü, içerik türü ve sıkıştırma süresi gibi diğer ilgili bilgileri de size gösterecektir.
Check GZIP Sıkıştırma aracıyla Kinsta’nın ana sayfasını test etme
GZIP optimizasyonunun yalnızca web sayfanızda bitmediğini, aynı zamanda stil sayfaları, komut dosyaları ve yazı tipleri gibi statik metin tabanlı varlıklarını da içerdiğini unutmayın. Bu varlıkları sunmak için bir CDN kullanıyorsanız, CDN’nin bunlara GZIP sıkıştırması etkin olarak da hizmet verdiğinden emin olmanız gerekir.
2. “content-encoding: gzip” HTTP Yanıt Başlığı
Bir web sitesinin GZIP sıkıştırılmış içerik sağlayıp sağlamadığını doğrulamanın ikinci yolu, content-encoding: gzip
HTTP yanıt başlığını doğrulamaktır .
Chrome DevTools’u veya Firefox Geliştirici Araçlarını açabilir ve Ağ bölümünün altında bu yanıt başlığını arayabilirsiniz .
Cevaplar olmadan alt düzey 1 WordPress barındırma desteğinden bıktınız mı? Birinci sınıf destek ekibimizi deneyin! Planlarımıza göz atın
Daha önce Chrome DevTools’ta nasıl göründüğünü zaten göstermiştim. Firefox Geliştirici Araçlarında nasıl göründüğü aşağıda açıklanmıştır.
Firefox Geliştirici Araçlarında “content-encoding: gzip” başlığı
Sayfanın hem orijinal hem de sıkıştırılmış boyutunu görmek için Chrome DevTools ayarlar panelinde “Büyük istek satırları kullan” seçeneğini de etkinleştirebilirsiniz. Aşağıda görebileceğiniz gibi, orijinal sayfanın boyutu düşürüldü 118 KB lazım 22.9 KB GZIP ile bunu sıkıştırdıktan sonra.
Chrome Devtools’da sıkıştırılmış ve sıkıştırılmamış sayfa boyutlarını görüntüleyin
3. Web Sayfası Hız Testi Araçları
Çoğu web sitesi hız testi aracı, web sayfalarınızı sunmak için GZIP gibi sıkıştırmayı kullanmadığınız konusunda sizi uyaracaktır. Bu makaleye gelen pek çok okuyucu, muhtemelen birçoğu yukarıda ayrıntılı olarak tartıştığım bu GZIP uyarıları nedeniyle geliyor.
Çeşitli web sayfası hız testi araçlarında GZIP uyarıları
WordPress web sitenizde GZIP sıkıştırmasının etkin olup olmadığını kontrol etmek için PageSPeed Insights, GTmetrix, Pingdom Tools ve WebPageTest gibi araçları kullanabilirsiniz.
GZIP Sıkıştırma Nasıl Etkinleştirilir
Web sunucunuzda GZIP sıkıştırması etkin değilse, onu etkinleştirmenin birçok yolu vardır. Kesin yöntem, web sitenizi barındırmak için hangi web sunucusunu kullandığınıza bağlıdır.
Önemli: Her zaman olduğu gibi, düzenlemeden önce sitenizin ve sunucu yapılandırma dosyalarınızın yedeğini alın.
WordPress Eklentisi ile GZIP’yi etkinleştirin
WordPress sitenizde GZIP sıkıştırmasını etkinleştirmenin en kolay yolu, bir önbelleğe alma veya performans optimizasyonu eklentisi kullanmaktır.
Örneğin, size, WordPress sitesi barındırabilir eğer Apache web sunucusunun , W3 Toplam Önbellek için bir seçenek içerir GZIP sıkıştırmayı etkinleştirmek için onun altında Tarayıcı Önbellek ayarları panelindedir
Aynı şekilde, WP Rocket , GZIP sıkıştırma kurallarını otomatik olarak eklemenize izin verir . Bu eklentiler, Apache’nin mod_deflate
modülünü .htaccess dosyasına ekleyerek GZIP sıkıştırmasını etkinleştirir .
W3 Total Cache’de GZIP sıkıştırmasını etkinleştirme
WordPress eklentileri, web sunucunuzdaki dosyaları değiştirmek için izinler gerektirir. Doğru izinlere sahip değillerse, başarısız olurlar veya size bir hata gösterirler.
Bu tür durumlarda, barındırma sağlayıcınızla iletişime geçmeniz veya aşağıdaki kod parçalarını kullanarak web sunucunuzun yapılandırma dosyalarını manuel olarak değiştirmeniz gerekir.
Apache Web Sunucusunda GZIP’yi etkinleştirin
Netcraft’a göre Apache, bugün kullanılan diğer web sunucularından daha fazla aktif siteye hizmet vermektedir. Aynı zamanda WordPress tarafından önerilen iki web sunucusundan biridir .
Apache sunucularında GZIP sıkıştırmasını etkinleştirmek için, onun mod_filter
ve mod_deflate
modüllerini kullanmanız ve bunları doğru yönergelerle düzgün şekilde yapılandırmanız gerekir. Apache’yi, ağ üzerinden istemcilere göndermeden önce sunucu çıktısını sıkıştırması için yönlendirirler.
Sahip olduğunuz erişim düzeyine göre Apache’nin sunucu yapılandırmalarını düzenlemek için iki seçeneğiniz vardır:
- Ana sunucu yapılandırma dosyasına (genellikle httpd.conf denir ) erişebiliyorsanız, Apache’yi .htaccess dosyaları Apache’yi yavaşlatabileceğinden yapılandırmak için kullanmanız önerilir .
- Genellikle çoğu WordPress paylaşılan barındırma sağlayıcısında görülen ana sunucu yapılandırma dosyasına erişemiyorsanız, Apache’yi .htaccess dosyasını kullanarak yapılandırmanız gerekir .
Barındırma sağlayıcıları nadiren ana sunucu yapılandırma dosyasını düzenlemenize izin verdiğinden, ilk seçenek kesinlikle sistem yöneticileri içindir . Bu şekilde nasıl yapılacağını açıklamak bu makalenin kapsamı dışındadır. Başlamak için HTML5 Boilerplate projesi tarafından paylaşılan örnek Apache Sunucusu Yapılandırmalarına ve Apache belgelerine başvurabilirsiniz .
Çoğu paylaşılan barındırma sağlayıcısı .htaccess dosyalarını düzenlemenize izin verdiğinden, ikinci seçenek çoğu WordPress site sahibi için idealdir .
Başlamak için SFTP’yi veya barındırıcınızın çevrimiçi dosya yöneticisini kullanarak .htaccess dosyasını WordPress sitenizin kök dizininde bulun. Ardından aşağıdaki kod parçacığını ekleyin.
Önemli:mod_filter
Modülün sunucunuzda etkin olduğundan emin olun . Çoğu web barındırıcısı varsayılan olarak etkinleştirmiştir, ancak değilse, AddOutputFilterByType
yönerge çalışmaz ve bir HTTP 500 hatası verebilir. Aşağıdaki kod parçacığını ekledikten sonra herhangi bir sorununuz varsa sunucunuzun hata günlüklerini kontrol edebilirsiniz.
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for ancient browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
Yukarıdaki kodu yalnızca .htaccess dosyanızın mevcut direktiflerinden sonra ekleyin . Dosyayı kaydedin ve ardından sunucunuzda GZIP sıkıştırmasını etkinleştirip etkinleştirmediğini kontrol edin.
GZIP sıkıştırmasını etkinleştirdikten sonra Apache .htaccess dosyası örneği
Web sunucunuz şimdi yukarıda listelenen tüm dosya uzantıları için sıkıştırılmış dosyalar sunmalıdır. Bunu, daha önce bahsedilen yöntemlerden herhangi birini kullanarak onaylayabilirsiniz.
İstemci tarafındaki proxy’lerin ve güvenlik yazılımının GZIP sıkıştırmasını engellemediğinden emin olmak istiyorsanız , yukarıdaki kod parçacığını aşağıdaki kod parçacığıyla değiştirebilirsiniz.
<IfModule mod_deflate.c>
# force compression for clients that mangle 'Accept-Encoding' request headers
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# compress all output with one of the following file extensions
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE "application/atom+xml" \
"application/javascript" \
"application/json" \
"application/ld+json" \
"application/manifest+json" \
"application/rdf+xml" \
"application/rss+xml" \
"application/schema+json" \
"application/geo+json" \
"application/vnd.ms-fontobject" \
"application/wasm" \
"application/x-font-ttf" \
"application/x-javascript" \
"application/x-web-app-manifest+json" \
"application/xhtml+xml" \
"application/xml" \
"font/eot" \
"font/opentype" \
"font/otf" \
"font/ttf" \
"image/bmp" \
"image/svg+xml" \
"image/vnd.microsoft.icon" \
"text/cache-manifest" \
"text/calendar" \
"text/css" \
"text/html" \
"text/javascript" \
"text/plain" \
"text/markdown" \
"text/vcard" \
"text/vnd.rim.location.xloc" \
"text/vtt" \
"text/x-component" \
"text/x-cross-domain-policy" \
"text/xml"
</IfModule>
# define and map media types to their appropriate encoding type
# Using SVG format (Scalable Vector Graphics) is highly recommended to
# load logos, icons, text, and simple images. You can compress .SVG files
# further using GZIP to create .SVGZ files. However, most browsers don’t
# know that they need to decompress them first if they’re not served
# without an appropriate ‘content-encoding’ HTTP response header. Thus,
# these images wouldn’t show up in the browser. Hence, this module.
<IfModule mod_mime.c>
AddType image/svg+xml svg svgz
AddEncoding gzip svgz
</IfModule>
</IfModule>
Burada kullanılan tüm yönergeler hakkında daha fazla bilgiyi kod deposuna giderek ve oradaki bağlantılı tüm kaynakları takip ederek öğrenebilirsiniz .
Nginx Web Sunucusunda GZIP’yi etkinleştirin
Netcraft’a göre, Nginx, web’e bakan bilgisayarlar tarafından en çok kullanılan web sunucusudur . Mevcut eğilim devam ederse, Apache’yi geride bırakarak aktif siteler tarafından en çok kullanılan web sunucusu haline gelecektir.
Ngx_http_gzip_module içinde tanımlanan yönergeleri kullanarak Nginx web sunucunuzda GZIP sıkıştırmasını etkinleştirebilirsiniz .
Başlamak için, aşağıda verilen yönergeleri nginx.conf dosyanıza ekleyin . Genellikle, bu dosyayı sunucunuzun /etc/nginx/nginx.conf
konumunda bulabilirsiniz.
# enables GZIP compression
gzip on;
# compression level (1-9)
# 6 is a good compromise between CPU usage and file size
gzip_comp_level 6;
# minimum file size limit in bytes to avoid negative compression outcomes
gzip_min_length 256;
# compress data for clients connecting via proxies
gzip_proxied any;
# directs proxies to cache both the regular and GZIP versions of an asset
gzip_vary on;
# disables GZIP compression for ancient browsers that don't support it
gzip_disable "msie6";
# compress outputs labeled with the following file extensions or MIME-types
# text/html MIME-type is enabled by default and need not be included
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/vnd.ms-fontobject
application/wasm
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/bmp
image/svg+xml
text/cache-manifest
text/calendar
text/css
text/javascript
text/markdown
text/plain
text/xml
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;
Siteniz büyük JS ve CSS dosyaları sunuyorsa , aşağıdaki yönergeyi nginx.conf dosyanıza ekleyerek sıkıştırma için kullanılan arabellek boyutunu artırabilirsiniz :
# sets the 'number' and 'size' of buffers for GZIP compression
# default buffer size is 4K or 8K depending on the platform
gzip_buffers 16 8k;
Nginx.conf dosyanızı kaydettikten sonra Nginx’i yeniden yüklemeyi unutmayın .
sudo service nginx reload
Son olarak, sunucunuzda GZIP sıkıştırmasının etkin olup olmadığını test etmelisiniz. Tüm direktiflerin güncel bir listesi için Nginx belgelerine başvurabilirsiniz ngx_http_gzip_module
.
IIS Web Sunucusunda GZIP’yi etkinleştirin
Microsoft’un İnternet Bilgi Hizmetleri (IIS), günümüzde kullanımda olan üçüncü en popüler web sunucusudur . IIS, özellikle şirkete özgü intranet ve extranet sunucuları kurmak için Windows üzerinde çalışan kurumsal ortamlarda dağıtılır.
Bu oluyor nadiren konakçının WordPress sitelerine kullanılan nedeniyle çeşitli uyumluluk sorunları.
Yine de, kendinizi IIS’de GZIP sıkıştırmasını etkinleştirmeniz gereken ender durumlardan birinde bulursanız, başlamak için Microsoft’un belgelerine bakabilirsiniz.
GZIP Sıkıştırmaya Alternatifler
Web’deki veri sıkıştırma dünyası her zaman gelişiyor. İle ortalama sayfa ağırlığı boyutu sürekli artan, web teknolojisi daha verimli web üzerinden veri aktarımı yapmak için çok onunla yetişmeye çalışıyor.
Yeni bir sıkıştırma algoritması, son birkaç yılda yaygın bir popülerlik kazandı: Brotli . WOFF2 web yazı tiplerini sıkıştırmak başlangıçta Brotli’nin ana odak noktasıydı, ancak o zamandan beri her tür veri için sıkıştırmayı desteklemek üzere genişletildi.
Brotli, verileri GZIP’den daha iyi sıkıştırır, ancak verileri sıkıştırmak için çok daha fazla zaman ve kaynak gerektirir. Bununla birlikte, açma süresi GZIP ile karşılaştırılabilir, ancak yine de biraz daha yavaş.
Çeşitli tarayıcılarda Brotli desteği
Tarayıcıların çoğu bugün Brotli’yi destekliyor , ancak onu WordPress sitelerinde kullanmak hala biraz karmaşık. Sitenizi, Brotli’yi destekleyen veya Brotli kitaplığını yüklemenize izin veren bir barındırma sağlayıcısında barındırmalısınız. Yönetilen WordPress ana bilgisayarlarının çoğu henüz bunu tam olarak desteklemiyor, ancak Cloudflare veya KeyCDN gibi bir CDN kullanıyorsanız , kolayca etkinleştirebilirsiniz.