IE7 ve IE8 için PHP Ajax Önbellekleme

5 Cevap php

Ben yoğun AJAX kullanır PHP / Javascript ile yazılmış bir uygulama var. IE7 ve IE8 için varsayılan önbellek davranış 'Otomatik' ki, bizim organizasyon için benim uygulama katletmek olacaktır set endişe duyuyorum.

Yaklaşık 1500 kullanıcıların ve benim IT departmanı tüm bu kullanıcılar için IE önbelleğe alma seçeneği değiştirmek olmayacağını söylüyorlar vardır.

Benim soru: Nasıl kesinlikle garanti edebilirim ki tüm kullanıcılar hemen bu değişikliği göreceksiniz ki, benim uygulama için bir değişiklik yaparsanız?

Ayrıca, nasıl AJAX zaman geri taze sonuçlar getireceğini garanti edebilir? Ben gerçekten her çağrı için tüm URL'leri benzersiz yapım başvurmak zorunda mı?

İnternette bu konuyla ilgili bir belirsizlik adil bir miktar gibi görünüyor. Her zaman çalışan bir kesin bir yanıt olmalı.

More Questions

Neden sadece hile AJAX dosyaları HTTP başlıklarını yok ayarı değil mi?

Ayrıca, nasıl ben bu çözümler really çalıştığını biliyor musunuz? Test önbelleğe alma davranışı için doğru prosedürü nedir?

5 Cevap

Bu başlıkları eklemeyi deneyin:

header("Cache-Control: no-cache, must-revalidate");
header('Pragma: no-cache');

Ayrıca belki sorgu dizesinde bir rand sayı ve ya zaman () geçmek?

Her sorgunun sonuna benzersiz id avı bir önbellek eklemek için gidiyoruz, o rand kullanmayın. (Ms) yerine geçerli tarih / zaman kullanın. Bu hata ayıklama daha uygun zamanda, benzersizliği garanti.

URL benzersiz yapım büyük bir havai değildir. Sadece URL sonuna rastgele bir numara eklemek gerekir. GET istekleri durumunda, bu gibi yapabilirsiniz

/someresource.php?some_key=foo&no_cache=9832742938642

Sadece isteği işlemeyi ne olursa olsun komut içinde rand anahtar değer çiftini göz ardı edebilirsiniz.

Bildiğim kadarıyla, buna sahip tek seçenek.

Sunucudaki verileri açıkça (aksi takdirde önbelleğe alma ile ilgili bir sorun olmazdı) değiştiği yerine POST isteği kullanın. Bkz http://javascript.about.com/od/ajax/a/ajaxgp.htm

JQuery ile böyle önbelleğe önlemek için ekstra bir parametre ekleyebilirsiniz:

$.getJSON(myUrl, {"no_cache": new Date().getTime()}, function(data) {
// do something
}


$.getJSON(myUrl, {"no_cache": new Date().getTime()}, function(data) {
// do something else
}