2013-03-01 11 views
6

Çok sayıda görüntüyü HTML5'te depolamak veya yerel olarak depolanmak ve görüntülemek için uzun bir süre aradım.HTML5 veya Phonegap kullanarak 40.000 görüntü nasıl saklanır?

Uygulama, e-ticaret web sitesi gibi bir ürün siparişi ve katalogudur, ancak nihai istemciler değil, toplu siparişler için, her görüntü bir üründür, bu nedenle 40k görüntüye sahip olma ihtiyacı vardır. İhtiyaç, satış elemanının tabletleri çevrimdışı modda günlerce, haftalarca kullanabilmesi ve yalnızca bağlantıya sahip olduğunda veya senkronize etmek istediğinde ERP ile senkronizasyon yapması gerekliliğinden kaynaklanmaktadır.

Her satış görevlisi, uygulama için özel bir Android tablet Tegra3 Dört Çekirdekli, 32 Gb'ye sahiptir. Ancak uygulama, masaüstünde iPad ve Chrome'u da destekliyor.

Ancak aşağıdaki sınırlamalar karşılaştı:

  1. Kullanım html5 çevrimdışı (uygulama önbelleği) - Bu bildirim dosyası yönetmek 50Mb'a iOS cihazları sınırlı ve sabit edilir.
  2. WebSQL veritabanını base64 kodlu resimlerle kullanın. Aynı boyut sınırlamaları (50Mb).
  3. base64 ile localCache kullanın, yine boyut sınırlamaları (5 - 10Mb).
  4. TelefonGap Dosya API'sini kullanmak için HTML5 uygulamanızı dönüştürüyorum, ancak sonra Windows PC'ler için Masaüstü Desteği'ni kaybediyorum ve web hizmetleriyle ilgili bazı sorunlar yaşıyorum.

Belki de bunu yapmanın alternatif bir yolunu mu yaşıyorum?

Çevrimdışı görüntüleme için çok sayıda görüntüyü saklamanın bir HTML5 yolu var mı? Mobil cihazlarda FileSystem API desteklenmez ve mobil cihazlarda çalışabilmek güçlü bir gerekliliktir.

+3

Neden tüm 40k görüntüleri kaydetmeniz gerekiyor? Açıkladığınız sınırlamalar bir nedenden ötürü vardır. Bu nedenle, uygulamalar bir cihazın depolama alanını kaldırmaz. Kullanıcıya, çevrimdışı olarak görüntülemek için aslında _needs_'e bağlı olarak, listeyi dinamik olarak azaltmaya çalışın. – freejosh

+0

Her ürüne ait bir ürün kataloğu 43.000 adet ürün var. İşte bu yüzden 40k görüntülere, gereksinimi yansıtacak şekilde güncellenmiş bir soruya ihtiyacım var. – Astronaut

+2

Bu korkunç bir fikir. Müşterinize geri dönüp, üst satıcıların neler olduğunu bulup uygulamadaki bu görselleri önbelleğe almanız gerekiyor. Aksi takdirde görüntüleri gerektiği gibi uzaktan yükleyin. –

cevap

1

Çözüm, HTML5 uygulamasının bir portuna Dosya API'sini kullanarak bir telefonGap uygulamasına geçecek.

HTML5'in farklı uygulamaları bu kararın nedenidir. AppCache çoğu mobil tarayıcıda çok sınırlı olduğundan, FileSystem API'sinin desteğinin olmaması. Mobil tarayıcılarda yalnızca 16-52Mb depolama kapasitesine sahip olmanız, büyük miktarlarda yerel olarak saklanan verileri (çevrimdışı kullanılabilir) gerektiren bir HTML5 web uygulamasının sınırlayıcı bir faktörüdür.

+0

Dosya API'sını kullanarak, bir cihazdaki binlerce görüntüyü bir HTML5 Cordova uygulamasıyla depoladığınızda nesneyi elde ettiğinizi merak ediyorum. Ve eğer öyleyse, yardımcı olan herhangi bir kaynağınız varsa. Temelde aynı durumdayım. – BradGreens

+1

Merhaba Brad, sonunda bir zip oluşturdum ve çoklu görüntülerle açtım. hundreads tamam, ama binlerce yönetmek için çok kolay değil. Mümkün, sadece çok hoş değil. – Astronaut

+0

Ah evet, yerel iOS uygulamamız sıkıştırılmış öğeler kullanıyor, anlam ifade ediyor. – BradGreens

2

Phonegap's own Implementation of the Filesystem API cep telefonu çalışmıyor mu? Bu yüzden Phonegap ilk etapta yaratıldı. Düz FileReader için Cordova API Dokümanlarınızdan

:

  • Android

    Desteklenen Platformlar

  • BlackBerry WebWorks (OS 5.0 ve üzeri)
  • iOS
  • Windows Phone 7 ve 8
  • , Windows
+0

Şu anda bu çözümü deniyorum. Sorun şu ki, o da desteklenmesi gerekiyor Masaüstü üzerinde çalışmaz – Astronaut

+0

Bu görünümden Phonegap FS API Desktop Browser'lar tarafından uygulanan FS Api stok uygulaması ile mevcut olmalıdır. Aksi takdirde çok ince bir soyutlama katmanı oluştururdum. –

+0

Geri bildiriminiz için teşekkürler, talihsiz bir şekilde başka alternatifim olmayacak gibi görünüyor. Uygulamayı PhoneGap, webSQL ve webServices'e taşımak zorundayım, bu yüzden önemsiz değil ... bunu yapmanın saf bir HTML5 yolunu bulamadığımı berbat ediyorum. Ama topluluk üzerinde denemek ve çağırmak zorunda kaldım. – Astronaut

0

Rastgele olsa İmge sayfası 8? sadece bir dosya yapar ve istekleri en aza indirir

+0

Yığın Taşması'na Hoş Geldiniz'den daha fazla kaynağa erişme ihtiyacı var! Cevabınızı detaylandırır mısınız ve nasıl yapılacağı ve ne gibi avantajlar sağladığı hakkında daha fazla bilgi verebilir misiniz? –

+0

Aslında bunu düşündüm. Bununla birlikte, görüntülere ada göre gönderme ihtiyacı vardır ve bunları gruplandırmak için kolay bir yol yoktur. – Astronaut

0

Yerel bağlantıları yalnızca yerel bağlantıları kabul edebilecek şekilde çalıştırmaya ne dersiniz? Apache'de, yapılandırma dosyasında "127.0.0.1'den izin ver" gibi bir şey hile yapmalıdır. Yerel bir web sunucusu kullanmak, herhangi bir HTML sınırlamasını kaldırmanıza izin verir.

+0

Hum, aklıma gelmeyen bir şeydi ... Ama bir iPad veya Android Tablet üzerinde yerel bir web sunucusu çalıştırabilir misin? Ben bu biraz depper kazmaya çalışıyorum, aynı zamanda istemci tarafında – Astronaut

+0

işlemek gerektiğini görmek gerekir Ve ayrıca yeni görüntülerle yerel web sunucusu güncelleme soruşturma ... hala ve ilginç bir seçenek araştırmak için. – Astronaut

0

Sadece sqlite veritabanınıza kaydedebilirsiniz. Ürün detay tablonuza bir tane daha alan (sütun) ekleyebilirsiniz.

Görüntüyü BLOB formatında VEYA base64 biçiminde kaydedebilirsiniz. (veritabanında).

phoneGap kullanarak veritabanınıza ve DB'nizdeki farklı tablolara kolayca erişebilirsiniz.

Daha fazla performans ve bant genişliğini kaydetmek için: Yapabilecekleriniz, tembel yükleme görüntülerini uygulayabilmenizdir. Ne zaman yeni bir görüntü indirirseniz onu sadece veritabanına kaydedin.

Bu şekilde I/O İşlemlerinden kaçınabilirsiniz ve ayrıca MVC kullanıyorsanız, ürün detay nesnesinde (Modal sınıfı) da görüntü nesnesine sahip olacaksınız.

bu önerinizin sizin için işe yaramasını umuyoruz :)

İlgili konular