Tarayıcılar her sayfa yük javascript ayrıştırma mı?
Tarayıcılar (IE ve Firefox bağlantılı javascript dosyaları sayfa yeniler her zaman ayrıştırmak?
Onlar önbellek dosyalarını, yani sanırım onlar için karşıdan onlara her zaman, ama her sayfa aslında ayrı, sanırım onlara yıkmak eski kod ve yeniden ayrıştırma.
Bu verimsiz, bu anlaşılabilir bir durum olsa da, ama eğer modern tarayıcılar siteleri içinde ayrıştırma adım önlemek için yeterince akıllı olup olmadığını merak ediyorum. Bir site javascript Kütüphanesi gibi ExtJS veya DV vb kullanır durumlar düşünüyorum.
CEVAP
Bu kadar kazmak için bu detaylar. Bu dikkati çekiyor ilk o halde JavaScript genellikle kabul edilir yorumlanmış ve kaçak bir VM, bu değil gerçekten durum ile modern tercümanları, hangi eğilimi derlemek için kaynak doğrudan makine koduna (dışında YANİ).
Krom : V8 Motor
V8 bir derleme önbelleği vardır. Bu depolar JavaScript 5 çöp koleksiyonları için kaynak bir karma kullanarak derlenmiş. Bu kaynak kodu aynı olan iki adet bellek önbellek girdisi dahil olduklarını nasıl olursa olsun paylaşmak anlamına gelir. Bu önbellek sayfaları yeniden temizlenmez.
Güncelleme - 19/03/2015
Krom takımı details about their new techniques for JavaScript streaming and caching yayınladı.
- Senaryo Akışı
Senaryo akışı optimize JavaScript dosyaları ayrıştırma. [...]
Sürüm başlayarak 41, Chrome indirmeye başladı en kısa sürede ayrı bir iş parçacığı üzerinde zaman uyumsuz ve ertelenmiş komut ayrıştırır. Bu ayrıştırma sadece milisaniye indirme işlemi bitti ve sayfaları sonuç olarak çok daha hızlı olarak yükleniyor sonra tam anlamına gelir.
- 2=başlangıç
- Kod önbelleği
Normalde, V8 motor, her bir sayfanın JavaScript, işlemci anlayan talimatları dönüştürmeyi derler. Bu derlenmiş kod daha sonra bir kullanıcı derlenmiş kod derleme sırasında makinenin durumunu ve içerikle sayfa uzak gider bir kez atılır.
Krom 42 kullanıcı sayfaya döndüğünde indirme, ayrıştırma, derleme adımları atlamış olabilir, böylece derlenmiş kodu yerel bir kopyasını saklamak gelişmiş bir tekniği tanıttı. Her sayfa yük üzerinde, bu Krom derleme zamanı @'ı hakkında önler ve mobil cihazlar üzerinde değerli pil kaydeder.
Opera : Carakan Motoru
Pratikte bu her script bir program olacak demektir derlenmiş olan kaynak kodunu başka bir program aynıdır bir önceki çıktıyı tekrar kullanıyoruz son zamanlarda derlenmiş oldu derleyici ve derleme tamamen adımı atlayın. Bu önbellek oldukça nerede tarama senaryo tipik bir sayfa yük etkili sonra bir haber farklı haber makaleleri gibi aynı siteden sayfa, her sayfayı sık sık aynı yükler, bazen çok büyük bu yana hizmet,, kod kitaplığı.
JavaScript sayfayı yeniden yükler üzerinde önbelleğe alınır bu nedenle, aynı komut için iki istekleri yeniden derleme neden olmaz.
Firefox : SpiderMonkey Motoru
SpiderMonkey doğal arka uç, JİT derleyici olarak
Nanojit
kullanır. Makine kodu derleme işlemi here görülebilir. Kısacası, bugörünüryüklü olduğu gibi komut dosyaları yeniden derlemek için. Ancak, eğer we take a closer look içNanojit
gördüğümüz en yüksek seviye monitörjstracer
, için kullanılan parça derleme olabilir geçiş sürecinde üç aşama sırasında derleme, bir fayda sağlamak içinNanojit
:İzleme monitörü ilk devlet izliyor. Bu demektir spidermonkey koduna göre yorumluyor. Her zaman spidermonkey geriye-atlama bayt kodu, monitör not yapar yorumlar jump-hedef program sayacı (PC) değeri kaç kez olmuştur atladı. Bu rakam PC için hit sayısı denir. İsabet ederse özellikle BİLGİSAYAR sayısı hedef eşik değerine ulaşır sıcak olarak kabul edilir.
Monitörün hedef PC sıcak karar verdiğinde, bir karma tablosu görünüyor eğer bir parça için yerel kod holding ise orada görmek parçalarının hedef PC. Eğer böyle bir parça bulursa, o geçişler modu yürütme. Aksi modunda kayıt için geçişler.
Bu kod
hot
parçaları için yerel kod önbelleğe alınmış olduğu anlamına gelir. Yani çekirdekler gerekmez. Yerel bölümler sayfa yeniler arasında korunur bu karma olduğunu açıkça belirtmiş değildir. Ama kabul ediyorum.Herkes o zaman bu mükemmel destekleyici kanıt bulmak.EDİT: Mozilla geliştirici Boris Zbarsky Gecko derlenmiş komut önbellek olmadığını belirttiği dikkat çektihenüz. this SO answer alınan.
Safari : JavaScriptCore/SquirelFish Motoru
Bu uygulama için en iyi cevabı zaten 12 ** olduğunu düşünüyorum.
Şu anda bayt kodu (veya yerel kod) önbellek değiliz. Bir
düşündük seçenek, ancak, şu anda, kod nesil
peşinde değiliz . önemsiz kısmı JS yürütme zamanı (&; 2% lt), ^br> şu an bu.Bu Maciej Stachowiak, Safari kurşun geliştirici tarafından yazılmıştır. Bunu doğru olarak kabul edebiliriz sanırım.
Ben şey olamadım bulmak başka bir bilgi ama sen-ebilmek okumak daha hakkında bu hızlı gelişmeler son
SquirrelFish Extreme
motor here istediğiniz yerde kaynak kodu here eğer maceracı duygu.
YANİ : Çakra Motoru
9 JavaScript Motoru (Çakra) bu alan ile ilgili mevcut bilgi yok.Eğer herhangi bir şey bilen varsa, lütfen yorum.
Bu çok gayri resmi, ama IE için büyük motor uygulamaları, blog yanıtla here (a MS developer of JScript) Eric Lippert Birleşik Devletleri:
JScript, JScript Klasik Klasik herhangi bir programı çalıştırmadan önce, tam olarak kodu sözdizimi denetimi, tam bir ayrıştırma ağacı oluşturmak ve bir bayt kodu oluşturmak bu anlamda derlenmiş bir dil gibi davranıyor. Biz o zaman bir tercüman aracılığıyla Java bayt kodu çalıştırın. Bu anlamda, JScript "" Java. derlenmiş olarak her bit.Fark JScript veya bizim tescilli bayt kodu ısrar incelemek için izin vermez. Ayrıca, Java çok daha üst düzey daha JVM Java-JScript Klasik Java dili biraz daha fazla, market, süper ve ayrıştırma ağacı ise JVM bayt kodu olduğunu açıkça amaçlanan ameliyat düşük seviyeli bir yığın makine.
Bu bayt kodu herhangi bir şekilde kalıcı değil önerir, ve böylece bayt kodu önbelleğe.
Tarih ile ISO 8601 Tarih Dize destek a...
JavaScript: bir dize Ayrıştırma Boolea...
nasıl geçerli sayfa javascript kullana...
Kullanarak " koyuyorsun;sayfa özel...
Nasıl bir düğme başka bir sayfa kullan...