SORU
15 NİSAN 2010, PERŞEMBE


Önleme tarayıcı önbellekleme iframe

Nasıl iframe içeriği önbelleğe alınan Firefox ve Safari önlemek musunuz?

Farklı bir sitede bir sayfaya bir iframe ile basit bir web sayfası var. Hem dış sayfa ve iç sayfada yanıt başlıkları önbelleğe alma önlemek için HTTP. Ben "tarayıcıda, dış sayfasını düzgün, ama tarayıcı hep iframed sayfanın önbelleğe alır ne olursa olsun çalışır düğmesine basın." düğmesine basın YANİ gayet güzel çalışıyor ama Firefox ve Safari sıkıntı yaratıyor.

Web sayfamda böyle bir şey görünüyor:

<html>
  <head><!-- stuff --></head>
<body>
  <!-- stuff -->
  <iframe src="webpage2.html?var=xxx" />
  <!-- stuff -->
</body>
</html>

var değişken her zaman değiştirir. İframe URL değişmiş olmasına rağmen (ve bu nedenle, tarayıcı bu sayfa için yeni bir istekte olmalıdır), tarayıcı sadece önbelleğe alınan içerik getirir.

HTTP istekleri ve yanıtları ileri geri gidiyor inceledim, eğer dış sayfa varsa bile <iframe src="webpage2.html?var=222" />, tarayıcı hala webpage2.html?var=111 bekleyeceğimi fark ettim.

Ben şimdiye kadar denedim:

  • İframe değişen rastgele var değeri olan URL
  • Ekleme Expires, Cache-Control ve Pragma dış web sayfasına başlıklar
  • Ekleme Expires, Cache-Control ve Pragma iç sayfasına başlıklar

Aynı kaynak politikası tarafından engelli olduğum için herhangi bir JavaScript hile yapmak mümkün değil.

Fikirler tükeniyor. Herkes iframed içeriği önbelleğe tarayıcı durdurmak için nasıl biliyor mu?

Güncelleme

Daniel başka bir test gerçekleştirmek için önerilen Fiddler2 kurdum, ve ne yazık ki, hala aynı sonuçları alıyorum.

Bu yapılan bir test

  1. Dış sayfa rastgele sayı JSP Math.random() kullanarak oluşturur.
  2. Dış Sayfa Web sayfasında rasgele sayı görüntüler.
  3. Dış sayfa iframe rasgele sayı geçerken çağırır.
  4. İç sayfa rastgele sayı görüntüler.

Bu test ile, güncelleme tam olarak ne görmek mümkün değilim, ve hangi sayfaların önbelleğe alınır.

Görsel Test

Hızlı bir test için, ben sayfayı başka bir sayfaya gidin ve sonra "geri." basma kapasitesi İşte sonuçlar:

Orjinal Sayfa:

  • Dış Sayfa: 0.21300034290246206
  • İç Sayfa: 0.21300034290246206

Sayfa bırakarak, sonra tekrar vurarak:

  • Dış sayfa: 0.4470929019483644
  • İç sayfa: 0.21300034290246206

Bu iç sayfa ... dış sayfa parametre URL farklı ile çağırıyor olsa da, önbelleğe alınmış, olduğunu gösterir. Nedense, tarayıcı iframe yeni bir URL isteyen gerçeğini göz ardı ederek; sadece eski bir yük.

Fiddler Test

Emin yeterli, Kemancı aynı şeyi doğruluyor.

(Ben yük sayfa.)

Dış sayfa denir. HTML:

0.21300034290246206
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206" />

http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206 denir.

(Ben bu sayfadan uzak ve geri gidin.

Dış sayfa denir. HTML:

0.4470929019483644
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.4470929019483644" />

http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206 denir.

Bu test, web tarayıcı sayfayı önbelleğe değil gibi görünüyor, ama iframe URL önbelleğe alma ve önbelleğe alınan URL ile yeni bir istek yapıyor. Ancak, yine de bu sorunu çözmek için hiçbir şey anlamadım.

Herkes iframe URL önbelleğe alınan web tarayıcı durdurmak için herhangi bir fikir var mı?

CEVAP
21 EKİM 2010, PERŞEMBE


Bu Firefox bir hata

https://bugzilla.mozilla.org/show_bug.cgi?id=356558

Bu geçici çözümü deneyin:

<iframe src="webpage2.html?var=xxx" id="theframe"></iframe>

<script>
var _theframe = document.getElementById("theframe");
_theframe.contentWindow.location.href = _theframe.src;
</script>

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNNMoney

    CNNMoney

    16 Kasım 2006
  • Eric Anthony

    Eric Anthony

    13 AĞUSTOS 2011
  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008