2011-07-14 15 views
13

Kullanıcılar mobil uygulamasından çıktığımda, önbelleğin temizlendiğinden nasıl emin olabilirim?jQuery açık önbellek çıkışında

Düşündüğüm şey önbelleği temizleyen ve ön sayfaya yönlendiren belirli bir sayfaya yönlendirme/oturum kapatma işlemidir, ancak önbellekten her şeyi nasıl temizlerim?

jQuery Mobile 1.0b2pre kullanıyorum. Önbelleği temizleyemezsiniz

+1

güzel soru ... 1 – genesis

+0

Güncelleme: Sunucu tarafı 'Cache-Control' vb alışkanlık iş. Bunu yapmak için JavaScript’e ihtiyacımız var. – webjay

+0

neden işe yaramadı? – genesis

cevap

6

İşte bunu nasıl çözdüğünü: Kullanıcılar oturumu arka uç yok edilir

Benim /logout eylem yönlendirir exitPage bir kimlik özniteliği bulunmayan /exit için. JavaScript'imde jQuery Mobile'ın, bu sayfa oluşturulmak üzere olduğunda tetiklenmesini istedim. Daha sonra DOM'yi boşaltır ve ön sayfaya yönlendirir.

/çıkış:

<div data-role="page" id="exitPage"></div> 

/my.js:

jQuery('#exitPage').live('pagebeforecreate', function(){ 
    jQuery(document).empty(); 
    window.location.replace('/'); 
}); 
1

. ama yapabildiğiniz kullanıcı oturum kimliğine göre tanımlamak ve varlıklar bir sonraki girişinde someimage.png?cachecontrol=blablalba URL'leri girdiğine, yeni bir oturum kimliğine sahip olacaklarını ekleyecektir, böylece eski dosyalar hala içinde olsa bile yeni dosyalar alacak önbelleği. diğer çözüm önbellek denetim üstbilgisini açıkça önbelleğe almak olacaktır. ancak tarayıcısını önbelleği temizlemek için zorlayamazsınız

+0

Görüntülerin önbelleğe alınması vb. Için sadece sayfa içeriği konusunda endişelenmiyorum. Bir kullanıcı ayarları sayfası vb gibi – webjay

+0

gibi önbellek şey sadece görüntüleri değil her şeyi ekleyebilirsiniz. Bu sadece bir örnekti. Hassas sayfalar için tarayıcıya başlıklarını kullanarak önbelleğe almaması gerektiğini söyleyebilirsin. – TheBrain

+0

Her şeyin önbelleğe alınmasını istiyorum. Ancak kullanıcı oturumu kapattığında, sayfa içeriği önbelleğinin temizlenmesi gerekir. – webjay

0

Tüm sayfalarınızın URL'sini değiştirmekten kaçınmak için oturum kimliğine göre oturumda her yanıtla birlikte ETag başlığını gönderebilirsiniz. Cache-Control:must-revalidate'u da dahil ederseniz, bu hile yapmalıdır.

+0

Sunucu tarafı, 'Cache-Control' işlevini zaten kullanan dinamik sayfalar olarak çalışmaz. jQuery Mobile içeriği önbelleğe alır ve jQuery Mobile'ın önbelleğindeki herhangi bir şeyi kaldırmanın bir yoluna ihtiyacım var. – webjay

İlgili konular