2015-08-27 10 views
37

istendi bir seçenek değildir, ancak önceki bu sorunun tekrarlamalar ne de cevapların Modern DİNLENME uygulama hiçbiri doğru olduğunda Internet Explorer 11 AJAX önbelleğe nasıl engellenir ya da yeterli. Bu soruya kesin bir cevap gerekli. Sorun iyi bilinmektedirPOST kullanarak ek sorgu dizesi parametreleri veya ben bu soruyu fark

IE (hatta 11) gerçekten gerçekten aptalca AJAX isteklerini önbelleğe alır. Herkes bunu anlıyor.

nedir

olarak anlaşılamamıştır önceki cevapların hiçbiri yeterli olmasıdır. SO üzerinde bu sorunun her örneği, her iki istekte de benzersiz bir sorgu dizesi parametresi (unix zaman damgası gibi) kullanarak, her istek URL'sini benzersiz hale getirecek şekilde önler ve böylece önler. önbelleğe alma.

- veya -

2) yerine GET POST kullanarak IE belli benzersiz durumlar hariç önbelleğe POST isteklerini yaptığı gibi.

- veya - sunucu tarafından geçirilen önbellek-kontrol "başlıkları kullanılarak

3).

IMO Modern REST API uygulama içeren birçok durumlarda, bu cevapların hiçbiri yeterli veya pratiktir. Bir REST API'sı, POST ve GET istekleri için tamamen farklı davranışlara sahip tamamen farklı işleyicilere sahip olacaktır, bu nedenle POST genellikle GET'e uygun veya doğru bir alternatif değildir. Ayrıca, birçok API, çevrelerinde sıkı bir validasyona sahiptir ve çeşitli nedenlerle, beklemedikleri sorgu dizesi parametrelerini beslediklerinde 500 veya 400 hata üretecektir. Son olarak, çoğu zaman biz 3 parti ya da biz sunucusu yanıtı tarafından sağlanan başlıklarda üzerinde denetim yok aksi esnek olmayan REST API ile arabirim ve önbellek denetim başlıklarını ekliyoruz gücümüz dahilinde değil.

Yani soru şu:

I.E. önlemek için bu durumda istemci tarafında yapılabilecek hiçbir şey gerçekten var mı AJAX GET isteğinin sonuçlarını önbelleğe almaktan mı?

+2

, çözüm demek? “En iyi uygulama” muhtemelen kullanmak istemediğini belirttiğiniz şeylerden birini kullanmaktır. –

+0

Ben size listelenmiş Ya diğer kullanabilirsiniz başka bir şey yok, zor IE önbellek kontrol başlıklarını yoksayarsa IE Gerçekten bu çoğunlukla pratik vasıtaları – stolli

+1

gerektirecektir inanmak bulabilirsiniz. –

cevap

33

önbelleğe alma normalde sunucu tarafından döndürülen zaman içerik başlıkları ayarlama yoluyla kontrol edilir. Bunu zaten yapıyorsanız ve IE bunları göz ardı edip önbelleğe aldırıyorsa, bunun üstesinden gelmenin tek yolu, sorunuzda bahsedilen önbellek bozma tekniklerinden birini kullanmak olacaktır. Bir API söz konusu olduğunda, önbellek bozma tekniklerinden herhangi birini denemeden önce uygun önbellek başlıklarını kullandığınızdan emin olmanız daha iyi olacaktır. En iyi uygulama tarafından

https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ

+0

Bir cevapta dürüst denemeyi takdir edin, ancak bunun bizi "yinelenen soru/cevap" bölgesinde bıraktığından korkuyorum. Oh iyi. Bahse girerim, bu soru reddedilir, "akran baskısı" rozetimi silerim ve toparlar.). – stolli

+0

Sorunuza göre "modern REST API" dan bahsediyorsunuz. "Yanlış" http fiilini veya yararsız bir parametreyi kullanmanın hacky çözümleri olduğunu ve temiz ve güzel uygulamalar için çalışmamasını kabul etmekteyken, önbellek denetimlerinin gerçek şekilde tasarlanmış (bu nedenle tercih edilen) yolu HTTP ile sunucu tarafıdır. Bu cevapta belirtilen başlıklar. –