SORU
20 EYLÜL 2012, PERŞEMBE


Olduğu Safari iOS 6 önbellekleme $.ajax sonuçlar?

İOS için yükseltme beri Safari web görünümü görüyoruz 6, $.ajax aramaları önbelleğe alma özgürlüğü. Bu Safari web görünümü kullanarak bu yüzden ™ bir uygulama bağlamında. $.ajax aramalarımıza POST yöntem ve önbellek {cache:false}, ama yine de bu oluyor yanlış belirledik. Ama yardımcı olmadı elle TimeStamp bir ekleme başlıklarını çalıştık.

Daha fazla araştırma yaptık ve Safari statik bir işlev imzası var ve aramak için arama değiştirmez web hizmetleri için önbelleğe alınan sonuçlar veriyor sadece bulundu. Örneğin, bir fonksiyon bir şey gibi düşünün:

getNewRecordID(intRecordType)

Bu işlev tekrar tekrar aynı girdi parametreleri alır, ama döndürdüğü verileri her zaman farklı olmalıdır.

Apple'ın iOS 6 ile birlikte etkileyici zip yapmak için acele olmalıdır önbellek ayarları ile çok mutlu ettiler. Başkasının iOS 6 Bu davranış gören var mı? Eğer öyleyse, tam olarak neden oluyor?


Bulduğumuz çözüm işlev imzası böyle: bir şey değiştirmek oldu

getNewRecordID(intRecordType, strTimestamp)

ve sonra her zaman TimeStamp bir parametre olarak geçirmek, ve sadece sunucu tarafında bu değer atın. Bu sorunu geçici olarak çalışır. Bu benim gibi bu konuda 15 saat geçiren zavallı bir ruh yardımcı olur umarım!

CEVAP
20 EYLÜL 2012, PERŞEMBE


Soruşturma biraz, iOS6 Safari hayır Cache-Control veya çift başlıkları olan Mesajlar önbellek olacak o çıkıyor sonra "Cache-Control: max-age=0".

Tek yolu buldum önlenmesi bu önbelleğe alma ne zaman bir küresel düzeyde yerine sahip olmak için hack rastgele querystrings üzerine son servis aramaları için ayarla "Cache-Control: no-cache".

Yani:

  • Cache-Control veya Expires = iOS6 başlıkları Safari önbelleği olacak
  • Cache-Control max-age=0 ve hemen Expires = iOS6 Safari önbelleği olacak
  • Cache-Control: no-cache = iOS6 Safari önbelleği

Apple SONRASI ilgili bölüm 9.5 HTTP spektrumundan da bunu kullanıyor sanırım:

Bu yöntem tepkiler olduğu saptanırsa yanıt sürece değil uygun Cache-Control veya süre sonu başlık alanları içerir. Ancak, (Diğer) 303 yanıtı için Kullanıcı aracı yönlendirmek için kullanılabilir ön belleğe alınabilir bir kaynak almak.

Teoride önbellek tepkiler...kim bilebilirdi gönderebilirsiniz. Ama başka bir tarayıcı üreticisi bugüne kadar iyi bir fikir olacağını düşündü. Ama bir set var sadece Önbellek-Kontrol başlıklarını veya Süresi dolmadan hiçbir ayarlandığında alınması için hesap DEĞİL. Bir hata olmalı.

Olduğu gibi aslında hiçbir şey önbelleğe istemiyorum bile ... çünkü benim API tüm hedef için Apache config sağ bit kullanıyorum ne aşağıda. Bilmiyorum sadece Mesaj için bunu ayarlamak için nasıl.

Header set Cache-Control "no-cache"

Güncelleme: sadece YAZI aynı olduğuna işaret, bu yüzden POST verileri herhangi bir değişiklik ya da sen de iyisin URL etmediğimi fark ettim. Belirtildiği gibi başka bir yerde sadece URL veya POST veri bir bit için rastgele veri ekleyebilirsiniz.

Güncelleme: sınırlayabilirsiniz "no-cache eğer böyle istiyorsanız" sadece Apache: Mesaj göndermektedir

SetEnvIf Request_Method "POST" IS_POST
Header set Cache-Control "no-cache" env=IS_POST

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BlackBoxTV

    BlackBoxTV

    7 Mayıs 2007
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008
  • SlimaksClass

    SlimaksClass

    15 Kasım 2010