Büyük JS kütüphanelerini yükleme maliyetlerini nasıl azaltabilirim?


23

Sayfam için büyük bir Javascript kitaplığı kullanıyorsam, bunun kullanıcının siteyi kullanmasını engellemediğinden nasıl emin olabilirim?

Yanıtlar:


25

Yapabileceğin 4 şey var.

  1. JS Dosyanızı küçültün. Bu, boyutunu küçültmek için tüm yorumları ve Boşlukları kaldırır.
  2. JS Dosyalarınızı her sayfada yalnızca 1 dosya olacak şekilde birleştirin.
  3. Dosyalarınızı gönderirken onları sıkıştırmak için bir paket kullanın. Bu onları daha da küçük yapacak
  4. İstenmeyen Javascript'i sayfanın en altına, sonunda yüklenecek şekilde yerleştirin. Bu, kullanıcının JS tamamen yüklenmeden önce bile sayfayı görmesine ve kullanmasına izin verecektir.

Ve diğer bazı insanlar önerdi:

  • Apache, dosyaların yönetimini büyük ölçüde kolaylaştıran sıkıştırmayı (ve sıkıştırılmış içeriğin önbelleğe alınmasını) otomatik olarak ele alır
  • JavaScript’i düzgün bir şekilde önbelleğe alabilir duruma getirmek, büyük avantajlar sağlayacaktır.
  • Joker karakterler (birden fazla URI ile) daha fazla eşzamanlı bağlantıya izin verir. Önceden alma sadece resimler için değil /

Yapabileceğiniz daha birçok şey ve bunları yapmanın daha iyi yolları var. Apache otomatik olarak sıkıştırmayı (ve sıkıştırılmış içeriğin önbelleklenmesini) işleyecektir, ki bu da kaynakların yönetimini büyük ölçüde basitleştirir. Javascript'i düzgün bir şekilde önbelleğe alınabilir hale getirmek, size büyük faydalar sağlayacaktır. Joker karakterler (birden fazla URI ile) daha fazla eşzamanlı bağlantıya izin verir. Önceden alma sadece resimler için değil /
symcbean

21

(Örneğin jQuery, Prototype veya Dojo gibi) ortak kütüphaneleri kullanıyorsanız, Google'a dosyayı yükünü ve onları yapabilir o hizmet , bu size birçok avantaj sağlar:

  • Küçültme ve sıkma vb. İçin endişelenmenize gerek yok
  • Bu senin bant genişliğin değil
  • Bu dosyalar farklı bir etki alanından gelir, böylece (en azından kısmen) ana bilgisayar adı başına 2 paralel istek sınırını geçici olarak giderebilirsiniz
  • Şanslıysanız, kullanıcı aynı kütüphaneden aynı kütüphaneyi kullanan başka bir siteyi zaten ziyaret etmiş, bu nedenle tarayıcı önbelleğinde zaten var.

Not: İstediğiniz sürümün önbelleğe alma özellikleri üzerinde büyük bir etkisi olabilir: jQuery 1.4.2'yi istemek size bir yıl boyunca önbelleğe alınabilecek bir dosya verir, ancak 1.4 yalnızca bir saat için önbelleğe alınabilir.


1
CDN için + 1 ve scriptsrc.net daha da kolaylaştırmak için;)
Agos

1
Notunuzu genişletebilir misiniz? Önbelleğe alma süresinde neden bir fark var?
theycallmemorty

2
@theycallmemorty: Dokümanları kontrol etmedim, bunun nedeni, 1.4.2'yi belirterek, istediğiniz sürümle ilgili çok net davrandığınızı, 1.4'ü sorarken temelde "en çok ver" 1.4 altında son sürüm ", bu yüzden ağır olarak önbelleğe almıyorlar.
Zhaph - Ben Duguid

Microsoft’un CDN’lerinde bazı JS kitaplıklarının (jQuery ve bazı MS’lere
Bert Lamb

6

Kütüphanenin tamamını bir js dosyasına koyabilir ve dosyayı sıkıştırabilirsiniz. Ancak, bir sayfanın ilk yüklenmesi için gerçekten önemlidir. Bundan sonra, özellikle önbellek sona erme süresini yeterince uzun ayarlarsanız, js dosyanız tarayıcıda önbelleğe alınır. Dolayısıyla, art arda gelen isabetler artık js dosyanızı yüklemeyecektir.


+1 için bütün kütüphaneyi bir dosyaya koyabilir ve sıkıştırabilirsiniz. Bunu düşünmedim.
Gordon Gustafson


0

Çok sayıda sayfa öğesi ve ayrı bir etki alanına erişiminiz varsa, büyük JS dosyası dahil olmak üzere tüm statik dosyaları ikinci etki alanında barındırmayı düşünebilirsiniz.

Steve Souders'ın Yüksek Performanslı Web Siteleri blogunda not ettiği gibi -

... bazı durumlarda, tek bir etki alanına indirilen bir sürü kaynak alıp bunları birden çok alana bölmeye değer. Ben bu etki alanı paylaşımı denir. Bunu yapmak, toplam sayfa yükleme süresini azaltarak daha fazla kaynağın paralel olarak indirilmesini sağlar.

başka bir yerde yazıyor ..

Tarayıcılar, etki alanı başına sınırlı sayıda bağlantı açar ... Bir etki alanı yerine iki etki alanındaki istekleri bölme veya paylaşma, özellikle IE 6 ve 7'de daha hızlı bir sayfa oluşturur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.