2015-07-23 19 views
5

Bir dizi .php sayfası olan bir çevrimdışı uygulama geliştiriyorum. Şu anda bu php dosyalarını bir .appcache manifest dosyasına koydum ve iyi çalışıyor. Ancak sorun, çevrimiçi olduğum halde, bir php sayfasına erişmeye çalıştığımda, önbelleğe alınmış sürümü yükler. Sunucuya bağlanmak ve güncel bilgileri yüklemek ve yeni bilgilerle önbelleğe olanın üzerine - Online ise ne tercihHTML5 appcache'de önbellek php sayfaları

  • böyle bir işlevdir.
  • Çevrimdışı - son güncelleştirilmiş statik HTML sayfasını gösterir.

İşte taskmanager.php bir veritabanından görevleri okuyup göstermek olduğunu do Ya benim .appcache bildirim dosyası içeriği

CACHE MANIFEST 
#2 
taskmanager.php 
public/css/bootstrap.css.map 
public/css/bootstrap.min.css 
public/css/bootstrap-theme.css.map 
public/css/bootstrap-theme.min.css 
public/css/main.css 
public/css/task-manager.css 
public/js/app.js 
public/js/taskmanager.js 
public/js/offlink.js 
public/js/jquery-2.1.4.js 
public/js/bootstrap.min.js 

NETWORK: 
* 
http://* 

olduğunu. Yukarıdaki gibi önbelleğe aldığımda, ilk defa yüklendiğinde her zaman görev listesini gösterir. İnternette olduğumda bile, veritabanını çağırmaz ve yeni girişleri almaz. Bunun yerine önbellekten yüklenir. Böylece, çözümüm ilk cevapta belirtildiği gibi FALLBACK bölümüne koymaktı. Aşağıda gibi yedek özelliğini bölümünde taskmanager.php dosyasını koymak bile , Şimdi

FALLBACK 
taskmanager.php static_taskmanager.php 

, ben internet bağlantısı varsa, taskmanager.php çalışacak ve bana son görevlerini gösterecektir. Ama static_taskmanager'ı en son görevler dizisiyle senkronize olacak şekilde yapmak istiyorum. Bunun anlamı, kullanıcı çevrimdışı olduğunda, static_taskmanager.php, kullanıcı çevrimiçi olduğunda taskmanager.php tarafından döndürülen en son görev listesini gösterecektir. Ama şu anda tam bir statik sayfa olarak çalışır.

  1. Bunu yapmak mümkün mü?
  2. Bu sorunu nasıl giderebilirim?

DÜZENLEME

Ben SO üzerinden arama ve Google tarafından anlaşıldığı üzere, bunu elde etmenin bir yolu AJAX kullanarak dinamik içerik yüklemek olduğunu. Ama merak ediyorum, sadece manifest dosyasının kendisini kullanarak yapmak mümkün.

cevap

1

FALLBACK'ı kullanma hakkında ne düşünüyorsunuz?

yedek özelliğini

yedek özelliğini bölüm dener kullanıcı çevrimdışı iken önbelleğe alınmamış kaynağa erişmek için zaman hizmet etmek Hangi tarayıcıları söyler. Bu nedenle, , CACHE ve NETWORK'dan biraz farklı görünüyor. Bir boşlukla ayrılmış satır başına iki değeri içerir. İlk değer, URI eşleşmesi isteğidir ve ikincisi, eşleme üzerine gönderilen kaynaktır. , çevrimdışı kullanım için sağdaki kaynağı önbelleğe alır, bu nedenle açık bir yol olmalıdır. Kullanıcı, çevrimdışı durumda kullanıcı /static.php son önbelleğe alınmış sürümü görecek sürece bu yapılandırma ile

FALLBACK: 
/main.php /static.php 

(http://html5doctor.com/go-offline-with-application-cache/)

, /main.php talepleri sunulacaktır.

sunucunuzda öğeleri güncellemek önbellek güncelleştirme tetiklemez unutmayın. Bildirim dosyasını değiştirmelisiniz. Bu durumda, static.php'nin yeni bir sürümü oluşturulduğunda, bildirimin bir sürüm veya zaman damgası yorumlamasıyla güncellenmesini isteyebilirsiniz. Daha sonra

# Generated: 2015-07-23 10:34a 

Bu durumda

notları, ben önbellekten Main.php çıkarmadan, ya da eski içerik bakıyorsun biliyorum imkanı veren statik yedek özelliğini haiz öneriyoruz. Bunun nedeni, static.php dosyasının güncellenmiş olsa bile, kullanıcının hat dışı olması ve bu güncellemeyi almaması durumunda, eski içeriği görecek olmasıdır.

Performans sorunları görüyoruz ve sunucu üzerindeki yükü azaltmak istiyorsanız, bunu gibi wget kullanarak Main.php statik bir sürümünü oluşturabilirsiniz:

wget http://example.com/main.php -O main.html 

Bu sayfa içeriği saklayacak HTML olarak Bir cron işi olarak çalıştırın, her beş dakikada bir yenilenebilir. böylece önbellek niyet yenerek -

alternatif static.php ve uygulama önbelleğini olasılıkla tüm varlıkları yeniden yüklenmesi neden olacak her zaman yenilenmesini sağlar.

+0

yanıt için teşekkür ederiz. Evet, geri dönüş benim çözümümün bir kısmını çözecek. Ayrıca static.php'yi main.php ile senkronize etmek istiyorum. Bunun anlamı, Main.php değişikliklerin içeriği, ben (Böylece, Geniune static.php son mümkün bilgileri gösterecektir) önbelleğe static.php üzerine yazmak istediğinizde. Bu müşteri tarafında yapmak mümkün mü? – arunatebel

+0

damgası her zaman Main.php değişiklikleri tarayıcılar tezahür yeni bir sürümünü istemek ve çoğunlukla veritabanı değişiklikleri olduğunu ne anlama geldiğini 'değişikliklerle' tarafından Aslında – user2182349

+0

static.php neden olmalıdır güncellenmesi. Örneğin: main.php, bir veritabanından hayvan isimlerini yazdırır. Bu yüzden, ilk kez yüklendiğinde, hayvan adlarını okuyacak ve html sayfası, appcache'de önbelleğe alınacaktır. Bundan sonra, sayfayı yeniden yüklediğimde (çevrimiçi olduğumda bile), veritabanının değişmesine rağmen ** aynı isimler grubunu gösterecektir **. İstediğim şey, bu veritabanı değişikliklerini takip etmektir, bu değişiklikleri her zaman eşitleyerek, önbelleğe alınmış sürümü güncel hale getirir. Umarım bu noktayı alır mısın? – arunatebel