PHP bir css / js dosyası için gzip kullanın nasıl?

5 Cevap php

Şimdi sadece gövde etiketi arasındaki altına koymak, herhangi bir sıkıştırma yöntemi yararlanarak değilim:

<link rel="stylesheet" type="text/css" href="Client/Css/all.css" />

Bu css dosyasını sıkıştırmak için PHP ("ob_gzhandler") ob_start kullanmak mümkün mü?

Ve nasıl?

5 Cevap

Bu genellikle programlı yapılmaz, bu web sunucusu tarafından işlenir

Apache için, bir mod_gzip veya kullanabilirsiniz mod_deflate modülü var.

IIS has settings siz kullanabilirsiniz.

(Sıkıştırma gerçekleştiren bir php komut dosyası aracılığıyla dosyaları boru zaman) Evet olabilir. Ama sadece çıkışını sıkıştırarak kendisine çok daha fazlası var. Sadece bunu destekleyen istemciler için sıkıştırılmış çıktı göndermek gerekir, size doğru bilgi / istekleri önbelleğe işlemek emin olmalısınız. Vb

Oldukça bazı durumlarda Web sunucusu bir PHP komut dosyası gerek kalmadan sizin için tüm bu yapmak için destek içerir. Apache durumunda mod_deflate ve mod_mime (direktifi AddEncoding) bakmak.

Çeşitli yolları vardır.

Sen (. Bir php uzantısı basit olurdu var adlandırma) PHP gibi dosyayı tedavi ve sonra da eklemek için web sunucusu söyleyebilirdi:

<?php
  header("Content-type: text/css; charset=utf-8");
  ob_start("ob_gzhandler")
?>

üst.

Sen aynı şeyi yapan bir PHP komut dosyası yazmak, ancak bunun yerine inline olan CSS dosyasında okur olabilir.

Her ikisi de bu seçenek sorunları önbelleğe yol - Eğer bu konuda aklı başında olmak istiyorsanız çok önbellek denetim HTTP başlıkları dikkat çekmek gerekir.

En iyi seçenek PHP unutun olmak ve sadece (mod_deflate, mod_gzip veya benzeri kullanarak) bu dosyaları sıkıştırmak için web sunucusu yapılandırmanız

. Eğer apache web sunucusu daha yeni bir sürümünü kullanıyorsanız, htaccess dosyasına aşağıdakileri ekleyin:


DeflateCompressionLevel 9  
SetOutputFilter DEFLATE  
BrowserMatch ^Mozilla/4 gzip-only-text/html  
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html  
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary  
Header append Vary User-Agent env=!dont-vary


Ne yapmaya çalışıyorsun? Onlar daha hızlı indirilen konum böylece müşterilerine tarayıcıya göndermek için bileşenleri küçültmek için çalışıyorsanız, size mod_defalte kullanıyor olmalıdır. Bu bir seçenek değil, daha fazla burada bulabilirsiniz: first result from googling "gzip php css"

EDIT: Ben sadece Apache eski bir sürümünü kullandığınız sürece, kullanabilirsiniz mod_deflate not mod_gzip gerektiğine işaret etmek istiyorum.