2011-03-10 19 views
14

HTML5’lerin çevrimdışı Web uygulamalarına izin verme yeteneğine bakmaya başlıyorum.Bir CDN (jQuery için) kullanmanın ve çevrimdışı bir Web uygulamasına sahip olmanın bir yolu var mı (HTML5 bildirimleri aracılığıyla)?

Bir süre önce bir CDN kullanmanın benim uygulamalarım için iyi çalıştığını gördüm, bu yüzden çoğunlukla jQuery için onlarla uğraşıyorum. Ancak, manifest dosyalarının alanlar arası kaynakların önbelleğe alınmasına izin vermediği görünmüyor. Bu noktada, ilgili tüm Dive Into HTML5 tutorial tarafından açıklandığı gibi yakalama bildirimini kullanıyorum. JQuery'm HTML5 Boilerplate'da tanımlanmış olana benzer şekilde çekilir.

Online kullanıcılar için bir CDN'den jQuery'ye devam edebilmeyi, ancak çevrimdışı erişim için yerel bir kopyanın önbelleğe alınabilmesini istiyorum.

Bu rotayı izlemeyi denemeye değer mi, yoksa tüm istekleri için sitemden jQuery'ye geçmeye mi çalışmalıyım?

Teşekkürler.

+0

Bu cevaplardan biri sorunuza cevap verirse, onu kabul etmelisiniz. – gabe

cevap

0

Haftalarca düşündükten sonra, bu gece eve giderken bir fikrim vardı.

Bir tarayıcıda çevrimdışı destek olup olmadığını kontrol etmek mümkündür. Daha sonra, bir kullanıcı için bir uygulama için çevrimdışı desteği etkinleştirmek isteyip istemediğini soran bir alanınız olabilir. Eğer yaparlarsa, jQuery'nin yerel kopyasını yüklersiniz. Değilse veya çevrimdışı destek kullanılamıyorsa, jQuery'ye bir CDN'den başvurmanız yeterlidir. Veya belki de uygulamada ayrı bir sayfadır. Ziyaret ederse, yerel jQuery dosyanızı çeken bir betik öğesi vardır. Ardından, sayfa uygulamaya geri döner veya pencere, uygulamaya bağlı olarak kapanır. (Ben mevcut sayfasında (değişkenleri üzerine yazmasını veya başka dan jQuery kaldırıldı sürece jQuery yerel kopyası, ana sayfada işe yaramaz ekleyerek varsayıyorum?).)

tarayıcı (ler) karar nasıl bağlı Çevrimdışı içeriğe (dosyalar) tutun, yerel jQuery dosyasının yalnızca bir sayfaya yüklendiğinde ve çok nadiren bir sorun olabilir. Kullanıcı çevrimdışı olana kadar, tabii ki, her sayfada (potansiyel olarak) her noktada çağrılır.

3

çevrimiçi jquery var ve yerel yüklenmemesi durumunda cevabı burada olsaydı kontrol etme yolu: Bir tartışma ve farklı yaklaşımlar bizzat

Ben html5boilerplate yaklaşımı gibi bir çift var How to load local script files as fallback in cases where CDN are blocked/unavailable?

:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script> 
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script> 

tarayıcı çağdaşlaştırıcı ile çevrimdışı önbelleğe destekleyip desteklemediğini kontrol edebilirsiniz http://www.modernizr.com/ moderniser 2.0 sürümü koşullu yükleme destekler, böylece algılamak ve (diveintohtml5 alınan) Aşağıdaki komut dosyası ile gerekli kaynak yüklenmeye kullanabilirsiniz:

if (Modernizr.applicationcache) { 
    // window.applicationCache is available! 
} else { 
    // no native support for offline :(
    // maybe try Gears or another third-party solution 
} 

ama dediğim gibi ben html5boilerplate yöntem tercih

6

Aslında, jQuery CDN'nize bir bağlantı içeren bildiriminizi yazabilirsiniz.Sadece benim app.manifest gibi: Benim için çalışır

<html manifest="app.manifest"> 
<head> 
    .... 
</head> 
<body> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    .... 
</body> 
</html> 

: HTML segment

CACHE MANIFEST 
# 2012-01-20:v4 

http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 

.

+2

Bu da benim için çalışıyor, biraz için bir yazı tipi ithal bir css dosyası üzerinde sıkışmış ama yazıya bu sorunu çözmek tezahürat eklemek! – mattdlockyer

+1

Benim için çalışmıyor. –

+0

Bitpile, ancak,