WordPress Sitelerini Hızlandırmak için GZIP Sıkıştırma Nasıl Etkinleştirilir

Yayınlanan: 2020-10-16

WordPress sitenizi hızlandırmanın en kolay yolu, tüm istenmeyen kaynaklarını ortadan kaldırmaktır. Hızlandırmanın ikinci en kolay yolu, istenen tüm kaynakları sıkıştırmaktır. Web sunucunuzda GZIP sıkıştırmasını etkinleştirmek, bunu başarmanın en basit ve en etkili yollarından biridir.

Tüm modern tarayıcılar, varsayılan olarak GZIP sıkıştırması desteği içerir. Ancak sıkıştırılmış kaynakları kullanıcılarınıza sorunsuz bir şekilde sunmak için sunucunuzu doğru bir şekilde yapılandırmanız gerekir.

Bu yazıda, web'de veri sıkıştırmanın temellerini, GZIP sıkıştırmasının ne olduğunu, çeşitli faydalarını ve farklı sunucu kurulumlarında WordPress sitelerinizi hızlandırmak için nasıl kullanabileceğinizi öğreneceksiniz.

Heyecanlı? Sıkıştıralım!

Video versiyonunu izlemeyi mi tercih ediyorsunuz?

#WordPress sitenizi hızlandırmanın en kolay yolu: İstenmeyen kaynaklardan kurtulun. 2. en kolay yol: İstenen tüm kaynakları sıkıştırın. Bunu GZIP sıkıştırmasıyla hızlı bir şekilde yapmayı öğrenin Tweet için Tıklayın

Web'de Veri Sıkıştırmanın Temelleri

Web'de veri sıkıştırma, web siteleri tarafından iletilen verilerin boyutunu küçültme işlemidir. Veri türüne (metin, resimler, stil sayfaları, komut dosyaları, yazı tipleri) bağlı olarak, verileri sıkıştırmanın çeşitli yolları vardır.

Bir web sayfasının ana bileşenlerinin bir örneği
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 küçültücü, kaynak koddan yorumlar ve boşluklar gibi gereksiz karakterleri kaldırarak metni sıkıştırır.

Aşağıdaki basit 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 semantiği vardır. Genel olarak, bu HTML belgesinde toplam 357 karakter vardır.

 < html > < head > < style > /* kinsta-banner is used on the homepage only */ .kinsta-banner { font-size: 150% } .kinsta-banner { width: 75% } </ style > </ head > < body > <!-- kinsta banner START --> < div >...</ div > <!-- kinsta banner END --> < script > kinstaScripts(); // random scripts used on the page </ script > </ body > </ html >

Yukarıdaki kodun okunması ve takip edilmesi kolaydır. Geliştirmek için idealdir. Ancak, tarayıcının yorumları okuması ve mükemmel girintili etiketlere sahip olması gereksizdir. Akıllı bir kompresör bu belgeyi analiz edebilir ve gereksiz tüm bitleri ondan kaldırabilir.

 < html >< head >< style >.kinsta-banner{font-size:150%;width:75%}</ style ></ head >< body >< div >...</ div >< script >kinstaScripts();</ script ></ body ></ html >

Küçültmeden sonra, HTML belgesi yalnızca 141 karaktere düşer. Bu, karakter sayısında %60,50 tasarruf demektir. Gözler için o kadar kolay değil, ancak tarayıcı için önemli değil. Yine de aynı sayfayı kullanıcıya gösterecek.

Her iki sürümden de yararlanmak için orijinal belgeyi bir "geliştirme sürümü" olarak tutabilirsiniz, 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 karşılaştırması
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ış versiyonu, aynı dosyanın küçültülmüş versiyonundan 3 kat daha büyüktür.

Benzer şekilde, yukarıda açıklanan sıkıştırma teknikleri, resimler, videolar, yazı tipleri ve daha fazlası gibi diğer içerik türlerini optimize edebilir. Bunun gibi içeriğe özgü küçültmeler, web sitenizin metin tabanlı varlıklarının boyutunu optimize etmenin ilk adımıdır.

Ancak veri sıkıştırmada yalnızca küçültmeden daha fazlası var. Gelişmiş matematik tekniklerini kullanan veri sıkıştırma algoritmaları, verilerin 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 geçerli bir küresel iletişim ortamı haline getirmeye önemli ölçüde katkıda bulunur.

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 küçültmenize olanak tanır.

GZIP, bir veri sıkıştırma algoritması olmasının yanı sıra, 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ının DEFLATE algoritmasını nasıl temel aldığına dair bir örnek
GZIP sıkıştırması DEFLATE algoritmasını temel alı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.

Sonraki bölüm, GZIP sıkıştırmasının nasıl çalıştığını derinlemesine ele almaktadır.

GZIP Verileri Nasıl Sıkıştırır?

GZIP sıkıştırmasının nasıl çalıştığına dair kaba bir örnek
GZIP sıkıştırmasının nasıl çalıştığına dair kaba bir örnek

Başlangıç ​​olarak, GZIP sıkıştırıcı fazlalıkları kaldırmak için ham veriler üzerinde LZ77 sıkıştırma algoritmasını çalıştırır. Bu algoritma, önceden tanımlanmış bir sürgülü pencerede (ham verilerin küçük bir bölümü) tekrarlanan desenleri bularak çalışır.

Ardından, ham verileri sıkıştırmak için tüm tekrarlanan dizeleri demetlerle değiştirir.

LZ77 kodlama algoritmasının bir örneği
LZ77 kodlama algoritmasının bir örneği

Yukarıdaki örnekte, kayan pencere boyutu yalnızca 13 karakter uzunluğundadır (13 bayt). Ancak, GZIP sıkıştırması, maksimum 32 KB (32.768 bayt) sürgülü pencere boyutu kullanabilir. Kayar pencerenin boyutu, LZ77 sıkıştırma performansında önemli bir rol oynar.

Ham verileri LZ77 algoritması ile sıkıştırdıktan sonra, GZIP sıkıştırıcı daha sonra daha fazla sıkıştırmak için Huffman kodlama algoritmasını kullanır. Bunu, daha sık meydana gelen karakterleri en az bit sayısını atayarak, nadir karakterlere ise en yüksek bit sayısını atayarak yapar.

Bu teknik, Mors kodunda kullanılana benzer, burada İngilizce 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 BOOKKEEPER kelimesini düşünün. 10 karakter uzunluğundadır, ancak yalnızca 6 benzersiz karakteri vardır. Bu kelime, tekli, ikili 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” kelimesi birçok tekrar eden harfe sahiptir.
“BOOKKEEPER” kelimesi birçok tekrar eden harfe sahiptir.

BOOKKEEPER gibi 10 karakterlik bir dize, 10 bayt (80 bit) bellek gerektirir. B , P , R harflerinin 1 örneğini, O ve K harflerinin 2 örneğini ve E harfinin 3 örneğini içerdiğini görebilirsiniz.

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 ikili bir ağaç oluşturarak yapar.

En düşük frekansa sahip harfler (örneğin B , P , R ) kendilerini ağacın altında bulurken, sık görünenler (örneğin E , O , K ) ideal olarak kendilerini en üstte bulurlar.

Ağaçtaki en üstteki düğüm köktür ve değeri, dizedeki toplam karakter sayısına eşittir.

Huffman Ağacı, “KİTAPÇI” kelimesi için
Huffman Ağacı, “KİTAPÇI” kelimesi için

Huffman ağacını oluşturduktan sonra, tüm sol ve sağ dallara ayrılan oklara sırasıyla 0 ve 1 sayıları verilir. Daha sonra, kökten yaprağa giden yolu izleyerek ve tüm 0'ları ve 1'leri birleştirerek herhangi bir karakter için Huffman kodunu oluşturabilirsiniz.

Huffman kodları, her karakter için benzersiz ikili kodlardır.
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ı frekanstaki karakterler için farklı bir sıralama stratejisi kullanarak alternatif ikili kodlar üretebilir. Ancak, kodlanmış dizenin toplam boyutu aynı kalacaktır.

25 bitlik bir dize olarak kodlanmış 80 bitlik bir kelime
25 bitlik bir dize olarak kodlanmış 80 bitlik bir kelime

Bu, orijinal sözcüğü depolamak için gereken bellekte %68,75'lik bir azalmadır.

Huffman ağacını 0 / 1 kuralıyla kullanmak, önek özelliğini karşılayan ikili kodlar üretir. Herhangi bir belirli karakterin Huffman kodunun başka bir karakterin kodunun öneki olmamasını sağlar ve Huffman ağacını kullanarak kodlanmış dizenin kodunun çözülmesini kolaylaştırır. Bu, GZIP dekompresyon hızında birincil rol oynar.

Tıpkı yukarıdaki kelimede olduğu gibi, GZIP sıkıştırıcı, LZ77 algoritması tarafından oluşturulan demetleri daha da optimize etmek için Huffman kodlama algoritmasını kullanır. Bu, .gz uzantılı yüksek oranda sıkıştırılmış dosyalarla sonuçlanır.

GZIP'in nasıl çalıştığı hakkında daha fazla bilgi edinmek istiyorsanız, hızlı bir genel bakış için bu videoya bakın.

GZIP Sıkıştırma Ne Kadar İyidir?

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.

Çeşitli CSS ve JS kitaplıkları için GZIP sıkıştırma oranlarının karşılaştırılması
Bazı popüler CSS ve JS kitaplıkları için GZIP sıkıştırma oranları

Yukarıdaki tabloda, küçültülmüş dosyaların GZIP ile sıkıştırılmasının boyutlarını daha da küçültebileceğini görebilirsiniz.

Not: GZIP ile herhangi bir dosya türünü sıkıştırabilirsiniz, ancak diğer yöntemlerle (örn. resimler, videolar) sıkıştırılmış varlıklar için bu herhangi bir tasarruf sağlamaz. Bazen dosya boyutunu bile 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 üstün olduğu yer burasıdır.

GZIP, bir akış algoritması kullanarak hızlı bir şekilde sıkıştırıldığından, hızın esas olduğu web protokolleri için mükemmel bir seçimdir. Ayrıca GZIP, verileri hem sıkıştırmak hem de açmak için minimum kaynak kullanır ve bu da onu hem sunucular hem de istemciler için ideal hale getirir.

brotli vs bzip2 vs GZIP vs xz sıkıştırma performansı (Kaynak: OpenCPU)
brotli vs bzip2 vs GZIP vs xz sıkıştırma performansı (Kaynak: OpenCPU)

Yukarıdaki çizelgeler 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 hafif bir farkla kaybeder, ancak sıkıştırma ve açma hızları için rekabeti tamamen geride bırakır.

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 geliştirmedeki tüm olumlu yönleri göz önüne alındığında, IETF, HTTP/1.1'de sıkıştırma için üç standart formattan biri olarak GZIP'i onayladı.

Not: GZIP'in 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ılı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ırmasının en önemli avantajlarına daha yakından bakalım.

Makul Bir Sıkıştırma Oranı Sağlar

Daha önce tartışıldığı gibi, GZIP rakiplerine kıyasla en iyi sıkıştırma oranına sahip değil. Ama onlardan da o kadar 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 oldukça arzu edilir.

Çok Az Bellek Gerektirir

GZIP, minimum bellek ayak 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 Çok 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 bir şekilde sıkıştırılmışsa veya küçükse ve GZIP sözlüğü eklemenin ek yükü, sıkıştırma tasarrufundan daha yüksekse olur. Bu fenomeni entropi kodlaması adı verilen bir kavrama bağlayabiliriz. GZIP bu etkiye karşı oldukça dirençlidir.

Kullanımı Ücretsiz ve Açık Kaynak

GZIP, öncelikle, erken Unix sistemlerinde kullanılan patentli sıkıştırma programı için ücretsiz, açık kaynaklı bir yedek olarak oluşturuldu. Bu nedenle, herhangi bir patente tabi değildir ve herkes tarafından serbestçe 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ırıyor olursanız olun, üzerinde GZIP'i etkinleştirerek hızlandırabilirsiniz.

Web Sitesi Hız Testi Araçlarında GZIP Uyarıları

Küçültmenin yanında, GZIP'i 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'nin etkin olup olmadığını kontrol eder. Başlık varsa, sıkıştırılmış dosyaları alır, sıkıştırır ve ardından daha küçük dosyaları size otomatik olarak sunar.

"İçerik kodlaması: gzip" yanıt başlığı
Chrome DevTools'daki "content-encoding: gzip" yanıt başlığı

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 etkin değilse, web sitesi hız testi araçlarında uyarılar görürsünüz.

Google PageSpeed ​​Insights / Lighthouse'da GZIP Uyarısı

Google PageSpeed ​​Insights, web sitenizde herhangi bir metin sıkıştırmayı etkinleştirmediğinizde bir uyarı verir.

Not: Google PageSpeed ​​Insights ve Google Lighthouse, iki ayrı web sitesi performans test aracıydı. Google, analiz motoru olarak Lighthouse'u kullanmak için PageSpeed ​​Insights'ı yükselttiğinde 2018'e kadar birbirlerinden bağımsız çalıştılar. Bu nedenle, PageSpeed ​​Insights ve Lighthouse artık bir ve aynı.

Google PageSpeed ​​Insights'ta "Metin sıkıştırmayı etkinleştir" uyarısı
Google PageSpeed ​​Insights'ta "Metin sıkıştırmayı etkinleştir" uyarısı

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 kadar hızlandırabilir.

Not: PageSpeed ​​Insights, sunucu tarafından tarayıcınıza döndürülen yanıt üstbilgilerine dayanır. Bazen, GZIP sıkıştırmasını etkinleştirmiş olsanız bile yanlış bir uyarı gösterebilir. Bunun nedeni, hız testinin ara proxy sunucusu veya güvenlik yazılımı kullanan bir makinede çalıştırılması olabilir. Harici sunuculardan sıkıştırılmış dosyaların indirilmesine müdahale edebilirler.

GTmetrix'te GZIP Uyarısı

Web siteniz sıkıştırılmış metin tabanlı kaynaklar sunmuyorsa GTmetrix 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ı
GTmetrix'te "Sıkıştırmayı etkinleştir" uyarısı

Not: GTmetrix, eski PageSpeed ​​Insights ve YSlow kitaplıklarını en yeni Google Lighthouse metrikleriyle 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 "Bileşenleri GZIP ile sıkıştır" uyarısı
Pingdom Araçları'nda "Bileşenleri GZIP ile sıkıştır" uyarısı

Açıklama bölümünde, Pingdom Tools size GZIP'in önemi hakkında da birkaç istatistik verir. Serin fasulye!

WebPageTest'te GZIP Uyarısı

WebPageTest, herhangi bir sıkıştırılabilir yanıtın en optimize şekilde sunulmadığını tespit ederse, Performans İnceleme sekmesinde bir uyarı gösterir.

WebPageTest'te "GZIP sıkıştırmasını kullan" uyarısı
WebPageTest'te "GZIP sıkıştırmasını kullan" uyarısı

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 değerlendirir, bu da öncelikli olarak düzeltmeniz gerektiği anlamına gelir.

GZIP Sıkıştırmasının Etkin Olup Olmadığı Nasıl Kontrol Edilir

Accept-Encoding: gzip, deflate HTTP başlığı, tüm modern tarayıcılar tarafından etkin bir şekilde desteklenir. Bu nedenle, Kinsta dahil çoğu web barındırıcısı, tüm sunucularında varsayılan olarak GZIP sıkıştırmasını etkinleştirir.

Web sunucuları bu başlığın bir tarayıcı tarafından gönderildiğini gördüklerinde, tarayıcının GZIP desteğini tanırlar ve content-encoding: gzip başlığı.

Ancak başka bir WordPress barındırma sağlayıcısı kullanıyorsanız veya yalnızca web sitenizin GZIP sıkıştırılmış içeriği düzgün bir şekilde sunup sunmadığını doğrulamak istiyorsanız, her zaman etkinleştirilip etkinleştirilmediğini 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 Test Araçları

Çevrimiçi bir araç kullanmak, web sitenizde GZIP sıkıştırmasının etkinleştirilip etkinleştirilmediğini kontrol etmenin en kolay yoludur. Ücretsiz Check GZIP Sıkıştırma veya HTTP Sıkıştırma Testi araçlarını kullanmanızı öneririm. Web sitenizin URL'sini girin ve Kontrol Et veya Test Et düğmesine basın.

Bu çevrimiçi araçların her ikisi de size GZIP'in etkin olup olmadığı ve test URL'sini GZIP sıkıştırması etkinken 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
Check GZIP Sıkıştırma aracıyla Kinsta'nın ana sayfasını test etme
Kinsta.com'u HTTP Sıkıştırma Testi aracıyla test etme
Kinsta.com'u HTTP Sıkıştırma Testi aracıyla test etme

GZIP optimizasyonunun yalnızca web sayfanızda durmadığını, 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ı etkinken de hizmet verdiğinden emin olmanız gerekir.

Cloudflare, Kinsta CDN, KeyCDN ve CloudFront gibi çoğu modern CDN, GZIP sıkıştırmasını destekler. Doğrudan varlıklara bağlanarak CDN tarafından sunulan varlıkları GZIP sıkıştırması için test edebilirsiniz.

Bir CDN tarafından barındırılan varlıklar için GZIP sıkıştırma testi
Bir CDN tarafından barındırılan varlıklar için GZIP sıkıştırma testi

Yukarıdaki raporda, Kinsta CDN'nin geleneksel bir çekme CDN'si olan KeyCDN motorunu kullandığını görebilirsiniz. WordPress sitenizi barındırmak için Kinsta kullanıyorsanız, varsayılan olarak etkin olduğundan GZIP sıkıştırması hakkında endişelenmenize gerek yoktur.

2. "İçerik kodlaması: 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.

Cevaplar olmadan alt seviye 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

Chrome DevTools veya Firefox Developer Tools'u açabilir ve bölümünün altında bu yanıt başlığını arayabilirsiniz.

Daha önce Chrome DevTools'da nasıl göründüğünü göstermiştim. İşte Firefox Geliştirici Araçları'nda nasıl göründüğü.

Firefox Geliştirici Araçları'ndaki "içerik kodlaması: gzip" başlığı
Firefox Geliştirici Araçları'ndaki "içerik kodlaması: 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ını kullan" seçeneğini de etkinleştirebilirsiniz. Aşağıda görebileceğiniz gibi, orijinal sayfanın boyutu GZIP ile sıkıştırıldıktan sonra 118 KB'den 22,9 KB'ye düşürüldü.

Chrome Devtools'da sıkıştırılmış ve sıkıştırılmamış sayfa boyutlarını görüntüleyin
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ırma kullanmamanız konusunda sizi uyarır. Bu makaleye ulaşan birçok okuyucu, muhtemelen birçoğunu 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ı
Ç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, 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 site ve sunucu yapılandırma dosyalarınızın yedeğini alın.

Bir 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, WordPress sitenizi Apache web sunucusunda barındırıyorsanız, W3 Total Cache, Tarayıcı Önbelleği ayarları panelinin altında GZIP sıkıştırmasını etkinleştirme seçeneği içerir.

Benzer ş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
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 gibi durumlarda, barındırma sağlayıcınızla iletişime geçmeniz veya aşağıdaki kod parçacıklarını kullanarak web sunucunuzun yapılandırma dosyalarını manuel olarak değiştirmeniz gerekir.

Not: Kinsta, platformunu yüksek performans, güvenilirlik ve güvenlik için optimize etmiştir. Buna, tüm barındırma planları için varsayılan olarak GZIP sıkıştırmasının etkinleştirilmesi de dahildir.

Üçüncü taraf önbelleğe alma eklentileri, Kinsta'nın dahili performans optimizasyonlarıyla çakışmaya neden olabileceğinden, Kinsta bunların çoğuna sunucularında izin vermez. Daha fazla bilgi için Kinsta'nın yasaklanmış eklentilerinin tam listesini görebilirsiniz.

Apache Web Sunucusunda GZIP'yi Etkinleştir

Netcraft'a göre Apache, günümüzde kullanılan diğer web sunucularından daha aktif sitelere hizmet vermektedir. Ayrıca WordPress tarafından önerilen iki web sunucusundan biridir.

Apache sunucularında GZIP sıkıştırmasını etkinleştirmek için mod_filter ve mod_deflate modüllerini kullanmanız ve bunları doğru yönergelerle düzgün bir şekilde yapılandırmanız gerekir. Ağ üzerinden istemcilere göndermeden önce sunucu çıktısını sıkıştırmak için Apache'yi yönlendireceklerdir.

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:

  1. Ana sunucu yapılandırma dosyasına (genellikle httpd.conf adı verilir) erişebiliyorsanız, .htaccess dosyaları Apache'yi yavaşlatabileceğinden, onu Apache'yi yapılandırmak için kullanmanız önerilir.
  2. Çoğu WordPress paylaşımlı barındırma sağlayıcısında olduğu gibi 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 Sunucu Yapılandırmalarına ve Apache belgelerine başvurabilirsiniz.

Birçok paylaşılan barındırma sağlayıcısı .htaccess dosyalarını düzenlemenize izin verdiğinden, ikinci seçenek çoğu WordPress sitesi sahibi için idealdir.

Başlamak için, WordPress sitenizin kök dizininde .htaccess dosyasını bulmak için SFTP'yi veya sunucunuzun çevrimiçi dosya yöneticisini kullanın. Ardından aşağıdaki kod parçasını buna ekleyin.

Önemli: Sunucunuzda mod_filter modülünün aktif olduğundan emin olunuz. Çoğu web barındırıcısı varsayılan olarak etkinleştirmiştir, ancak değilse, AddOutputFilterByType yönergesi çalışmaz ve bir HTTP 500 hatası verebilir. Aşağıdaki kod parçasını ekledikten sonra herhangi bir sorun yaşarsanız 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 yönergelerinden 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
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 kodla 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>

Kod deposuna giderek ve orada bağlantılı tüm kaynakları takip ederek burada kullanılan tüm yönergeler hakkında daha fazla bilgi edinebilirsiniz.

Nginx Web Sunucusunda GZIP'yi Etkinleştir

Netcraft'a göre Nginx, web'e bakan bilgisayarlar tarafından en çok kullanılan web sunucusudur. Mevcut eğilim devam ederse, yakında aktif siteler tarafından en çok kullanılan web sunucusu olmak için Apache'yi geçecek. Kinsta bile, WordPress için performansı optimize edilmiş barındırma çözümlerini güçlendirmek için Nginx'i kullanıyor.

Nginx web sunucunuzda ngx_http_gzip_module içinde tanımlanan yönergeleri kullanarak GZIP sıkıştırmasını etkinleştirebilirsiniz.

Başlamak için aşağıda verilen yönergeleri nginx.conf dosyanıza ekleyin. Tipik olarak, 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, nginx.conf dosyanıza aşağıdaki yönergeyi 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 ngx_http_gzip_module yönergelerinin güncel listesi için Nginx belgelerine başvurabilirsiniz.

IIS Web Sunucusunda GZIP'yi Etkinleştir

Microsoft'un İnternet Bilgi Hizmetleri (IIS), bugün kullanılan en popüler üçüncü web sunucusudur. IIS, özellikle şirkete özel intranet ve extranet sunucuları kurmak için Windows üzerinde çalışan kurumsal ortamlarda dağıtılır.

Çeşitli uyumluluk sorunları nedeniyle WordPress sitelerini barındırmak için nadiren kullanılır.

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 başvurabilirsiniz. Bu Yığın Taşması iş parçacığını da yararlı bulabilirsiniz.

GZIP Sıkıştırmasına Alternatifler

Web'deki veri sıkıştırma dünyası her zaman ilerlemektedir. Ortalama sayfa ağırlığı boyutunun sürekli artmasıyla birlikte, web teknolojisi de web üzerinden veri aktarımını daha verimli hale getirmek için ona yetişmeye çalışıyor.

Zamanla sayfa ağırlığı boyutunda artış (Kaynak: HTTPArchive)
Zamanla sayfa ağırlığı boyutunda artış (Kaynak: HTTPArchive)

Son birkaç yılda yeni bir sıkıştırma algoritması 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, dekompresyon süresi, hala biraz daha yavaş olmasına rağmen, GZIP'inkiyle karşılaştırılabilir.

Çeşitli tarayıcılarda Brotli desteği
Çeşitli tarayıcılarda Brotli desteği

Çoğu tarayıcı bugün Brotli'yi desteklemektedir, ancak onu WordPress sitelerinde kullanmak hala biraz karmaşıktır. 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 tam olarak desteklemiyor, ancak Cloudflare veya KeyCDN gibi bir CDN kullanıyorsanız, kolayca etkinleştirebilirsiniz.

Brotli, sıkıştırma statik varlıkları için büyük umut vaat ediyor. Akamai, Brotli ile GZIP'i karşılaştıran ayrıntılı bir makale yayınladı. You can check it out to learn more about Brotli.

Ready to speed up your site? ️ Enabling GZIP compression on your web server is one of the simplest and most efficient ways to achieve that. Learn how with this step-by-step walkthrough ️ Click to Tweet

Özet

A well-optimized web is great for everyone. Users love snappier websites, website owners love the reduced hosting charges, and web hosts love the optimization achieved on their servers. Compression techniques like GZIP are one of the best ways to speed up page load times for your visitors.

WordPress site owners can speed up their sites instantly by enabling GZIP compression. Kinsta enables it by default on all its servers, but for others, this article covers multiple ways to enable GZIP compression on various web servers.

Speed is critical for any website. Just compress!