Bir html belgesindeki bir gzip'li javascript bağlantı nasıl?

3 Cevap php

Ben indir zaman kazanmak için bir javascript Gzip Sıkıştırma başvurular bir dizi gördüm. But Ben de bazı tarayıcılar bu destek yok uyarıların sayısını görebilirsiniz.

Benim emrinde iki farklı yöntem vardır:

  1. mod_deflate htaccess ile verilen dizin Apache sıkıştırmak JS / CSS dosyalarını yapmak için kullanabilirsiniz
  2. ob_start('gzhandler') bir dosyayı sıkıştırmak ve doğru başlıkları ile tarayıcıya geri dönmek için kullanabilirsiniz.

Yöntem 1 ile sorunlar tüm tarayıcılar mod_deflate destek vardır, ve ben bu ayarlamak için yeterince akıllı olması için .htaccess dosyası yazmak için nasıl hiçbir ipucu var.

Yöntemi 2 ile sorun bir tarayıcı gzip'li komut dosyası veya stil destekler ve eğer söylemek konusunda kesin bir cevap olmasıdır bu mim tipi başlığındaki içerik türü olarak verilmelidir ne yaparsa.

Ben bazı tavsiyeler gerekir. İlk olarak, hangi yöntem daha evrensel tarayıcılar tarafından kabul edilir? İkincisi, nasıl sıkıştırılmamış komut yedekleme sağlamak için her iki yöntemi kullanarak çürümeye mi? Üçüncü olarak, <script src="js/lib.js.gz" type="text/javascript"></script> kendisi çalışmak istiyorsunuz? (Açıkçası çürüme olmaz.)

Kayıt için, ben mod_deflate ve tam gzip oluşturma yetenekleri ile PHP5 kullanıyorum ve benim doctype xhtml katıdır. Ayrıca, javascript kendisi YUI ile sıkıştırılır. Edit: Ben sadece geri gittim ve baktım, ama ben sadece Apache 1.3 var; Ben muhtemelen yok zaman mod_deflate söz için çok üzgünüm, 2 vardı düşündüm.

3 Cevap

Bu anlamda içerik sıkıştırılmış ediliyor nasıl bir tarayıcıya küçük bir fark var yani mod_deflate ve php gzhandler hem zlib dayanmaktadır.

İlk endişe yanıt olarak, modül belli ayarlayabilirsiniz böyle htaccess bilgi.:

<IfModule mod_deflate.c>
  # stuff
</IfModule>

İkinci endişe yanıt olarak, size PHP için tarayıcı desteği algılayabilir:

if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') ) {
  ob_start('ob_gzhandler');
  header("Content-Encoding: gzip");
// etc...
}

.. burada sıkıştırılmamış js dosyaları vs sıkıştırılmış bir müzakere idare edebilmek gereken bazı denenmemiş htaccess var: (source)

<FilesMatch "\\.js.gz$">
  ForceType text/javascript
  Header set Content-Encoding: gzip
</FilesMatch>
<FilesMatch "\\.js$">
  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
  RewriteCond %{HTTP:Accept-Encoding} gzip
  RewriteCond %{REQUEST_FILENAME}.gz -f
  RewriteRule (.*)\.js$ $1\.js.gz [L]
  ForceType text/javascript
</FilesMatch>

Tarayıcı düzgün Accept-Encoding başlığı bulunuyor ayarı ise, tarayıcı gzip destekleyebilir olmadığını söylemek gerekir:

Accept-Encoding: gzip,deflate

Sunucu satır içi gzip desteklemek için bunu başarmak için en iyi yoldur. Sen script etiketinin src niteliği hem de kapalı. "Gz" almak ve sıkıştırılmamış sunucudaki dosyayı saklamak istiyorsunuz. Istemci destekliyorsa, sunucu otomatik olarak bir gzip kodlanmış sonucunda komut göndermek istiyorsunuz. Bu sunucuya bazı ekstra CPU maliyeti yok, ama eski istemciler yine genişletilmiş versiyonu elde ederken, dosyayı destekleyen istemciler için sıkıştırılmış olur.

Apache2 için mod_deflate göz atın. mod_gzip Apache 1.x. için eşdeğerdir