2016-04-11 12 views
3

Ich habe ein Problem, dass Safari meine iFrames zwischenspeichert. Der folgende (Pseudo-) HTML (nun, es ist eine Aspx-Seite) ist in Safari 9.0 und allen anderen Browsern auf Mac und PC in Ordnung.Safari 9.1 Update bricht Iframes Caching

<html> 
<body> 
<iframe id="page1" src="Page1.aspx" /> 
<iframe id="page2" src="Page2.aspx" /> 
</body> 
</html> 

in Safari Version 9.1, obwohl

  1. Caching völlig
  2. in der Entwickler-Symbolleiste aus
  3. gedreht schlage ich Mac + R die Seite

Es wird neu geladen senden ein Aufruf an den Server, um Page1 oder Page2 abzurufen, anstatt zu zeigen, dass eine alte Version dieser Seite angezeigt wird. Keine Javascript-Fehler oder ähnliches von dem, was ich sehen kann.

Ich weiß, dass ich eine Zufallszahl oder etwas ähnliches hinzufügen konnte, dies hilft jedoch nur teilweise, da ein Postback innerhalb des Iframe erneut die zwischengespeicherte Seite darstellt.

Alle anderen da draußen, die einen Workaround gefunden haben? Ich setze auch das ganze Prama ohne Cache usw. um dies zu vermeiden, kein Glück.

habe ich versucht, dies auch in El Capitan mit dem gleichen Ergebnis, so dass es aussieht wie auf Safari 9.1 Update angeschlossen werden (10601.5.17.4)

Ich verfolgen auch den Verkehr auf dem Server und die Anforderung tatsächlich geschieht und der korrekte HTML-Code wird an den Client zurückgegeben, dies ist jedoch im Abschnitt "Netzwerk" im Safari-Netzwerk-Trace nicht sichtbar. ASP.Net v.4.0.

MacBook Air, OS X Yosemite (10.10.5), Safari-Version 9,1 (10601.5.17.4)

+0

Ok Ich fand es endlich nach Stunden des Testens .... contentWindow.location.reload (true) tut nicht, was es sollte .. auch die alte iframe.src = iframe.src, die den iframe normalerweise neu lädt nicht tue alles ... also fügt man der URL in dem Teil, in dem der Iframe neu geladen werden sollte, eine eindeutige Nummer hinzu und fügte dem ursprünglichen iframe-src eine eindeutige Nummer hinzu. Ich wurde von der Fiddlerausgabe ausgetrickst. –

+0

Ja, das gleiche Problem hier. – kamelkev

+0

Problem wurde mit der Folgeversion zu Safari 9.1 behoben - alles funktioniert jetzt wie erwartet. – kamelkev

Antwort

2

Wir mit unserer Anwendung das gleiche Problem beobachten. Wir rendern einige Inhalte in einem Iframe, das durch Steuerelemente auf der äußeren Seite geändert wird. Ab Safari 9.1 rendert der Iframe die Änderungen nicht, obwohl er den aktualisierten Inhalt vom Server abruft.

Das Kontextmenü zum Anzeigen des Iframes in einer neuen Registerkarte zeigt den aktualisierten Inhalt ohne erneutes Abrufen an. Er befindet sich also eindeutig im Speicher von Safari, wird aber im Iframe-Kontext nicht auf dem Bildschirm gerendert.

Es scheint jetzt, dass die einzige Lösung ist, Cache-Busing-URLs wie die schlechten alten Tage zu verwenden ... Safari sollte in diesem Fall wirklich den Cache-Steuerelement-Header beachten.