Frage zum Wiki-Artikel ‚Aktive Inhalte einbinden‘
Werner Honkomp
- frage zum wiki
- html
Auf der Startseite von http://fak-om.de/ ist ein Text mit Bild eingebaut, der über einen iframe eingebunden wurde. Dies ist erforderlich, da dieser Frame-Inhalt von einer dritten Person gepflegt wird. Das Problem ist dabei, dass diese Frame-Seite generell aus dem Browser-Cache geladen wird und sich auch nicht über den Reload-Button aktualisieren läßt. Ich möchte erreichen, dass diese Frame-Seite generell vom Server neu geladen wird und habe dazu folgenden Script in die iframe-Zeile eigebaut:
<iframe name="I1" src="http://fak-om.de/templates/Datenbank-Startseite.htm" border="0" frameborder="0" marginwidth="0" marginheight="0" height="570" width="770" javascript:I1.location.reload(true)>
Leider funktioniert das so nicht. Kennt jemand eine andere Lösung?
Werner Honkomp
Moin!
<iframe name="I1" src="http://fak-om.de/templates/Datenbank-Startseite.htm" border="0" frameborder="0" marginwidth="0" marginheight="0" height="570" width="770" javascript:I1.location.reload(true)>
Leider funktioniert das so nicht. Kennt jemand eine andere Lösung?
Man kann das Neuladen mit dem Hammer erzwingen in dem man als Parameter einen zufälligen Wert übergibt.
<h1>foo</h1>
<script>
document.write('<iframe name="I1" src="http://fak-om.de/templates/Datenbank-Startseite.htm?' + Math.random() + '" border="0" frameborder="0" marginwidth="0" marginheight="0" height="570" width="770">');
</script>
oder mit php:
<h1>foo</h1>
<iframe name="I1" src="http://fak-om.de/templates/Datenbank-Startseite.htm?<?php echo rand(0, 999999999); ?>" border="0" frameborder="0" marginwidth="0" marginheight="0" height="570" width="770">
Dazu müsstest Du die Datei aber mit der Endung .php versehen. Selbstverständlich kann man statt des Zufallswertes auch einen Zeitstempel, z.B. die seit dem 1.1.1970 00:00:00 vergangenen Sekunden, senden.
Man konfiguriere den Server so, dass das Cachen richtig funktioniert. Und da sehe ich folgendes:
fastix@trainer:~$ wget -d --delete-after http://fak-om.de/templates/Datenbank-Startseite.htm
Setting --delete-after (deleteafter) to 1
DEBUG output created by Wget 1.15 on linux-gnu.
URI encoding = »UTF-8«
--2016-01-27 12:46:32-- http://fak-om.de/templates/Datenbank-Startseite.htm
Auflösen des Hostnamen »fak-om.de (fak-om.de)«... 81.169.145.158, 2a01:238:20a:202:1158::
Caching fak-om.de => 81.169.145.158 2a01:238:20a:202:1158::
Verbindungsaufbau zu fak-om.de (fak-om.de)|81.169.145.158|:80... verbunden.
Created socket 3.
Releasing 0x0000000001070240 (new refcount 1).
---request begin---
GET /templates/Datenbank-Startseite.htm HTTP/1.1
User-Agent: Mozilla/5.0 (Windows rv:32.0) Gecko/20100101 Firefox/32.0
Accept: */*
Host: fak-om.de
Connection: Keep-Alive
---request end---
HTTP-Anforderung gesendet, warte auf Antwort...
---response begin---
HTTP/1.1 200 OK
Date: Wed, 27 Jan 2016 11:46:32 GMT
Server: Apache/2.2.31 (Unix)
Last-Modified: Wed, 27 Jan 2016 10:48:31 GMT
ETag: "94deaee-28c8-52a4e8afee69f"
Accept-Ranges: bytes
Content-Length: 10440
Keep-Alive: timeout=3, max=100
Connection: Keep-Alive
Content-Type: text/html
---response end---
Und das sieht eigentlich gut aus. ETag wird gesendet und Last-Modified scheint zu stimmen. Um das Verhalten kontrollieren zu können müsste man die Ressource ändern...
Übrigens ist der Weg mit dem IFrame "eher sehr ungünstig". Das wirst Du merken wenn der Inhalt nicht (mehr) passt. Auch werden zu viele Requests erzeugt, was den Seitenaufbau stark verlangsamt.
Wenn Du etwas wie php benutzen kannst informiere Dich über die Möglichkeiten, Dateien einzulesen und auszugeben:
<h1>Tolle Seite</h1>
<?php
readfile ($_SERVER['DOCUMENT_ROOT'] . '/templates/Datenbank-Startseite.htm');
?>
Jörg Reinholz
Vielen Dank für die aufgezeichten Möglichkeiten. Auf dem Server habe ich keinen Einfluss, der steht bei Strato. Aber die anderen Vorschläge werde ich mal prüfen.
Vielen Dank nochmal und einen schönen Tag, Werner Honkomp
Moin!
<iframe name="I1" src="http://fak-om.de/templates/Datenbank-Startseite.htm" border="0" frameborder="0" marginwidth="0" marginheight="0" height="570" width="770" javascript:I1.location.reload(true)>
Leider funktioniert das so nicht. Kennt jemand eine andere Lösung?
Unsaubere Lösung:
Man kann das Neuladen mit dem Hammer erzwingen in dem man als Parameter einen zufälligen Wert übergibt.
<h1>foo</h1> <script> document.write('<iframe name="I1" src="http://fak-om.de/templates/Datenbank-Startseite.htm?' + Math.random() + '" border="0" frameborder="0" marginwidth="0" marginheight="0" height="570" width="770">'); </script>
oder mit php:
<h1>foo</h1> <iframe name="I1" src="http://fak-om.de/templates/Datenbank-Startseite.htm?<?php echo rand(0, 999999999); ?>" border="0" frameborder="0" marginwidth="0" marginheight="0" height="570" width="770">
Dazu müsstest Du die Datei aber mit der Endung .php versehen. Selbstverständlich kann man statt des Zufallswertes auch einen Zeitstempel, z.B. die seit dem 1.1.1970 00:00:00 vergangenen Sekunden, senden.
Mag vielleicht unsauber sein, aber dieser Vorschlag erfüllt seinen Zweck:
<iframe name="I1" src="http://fak-om.de/templates/Datenbank-Startseite.htm?' + Math.random() + '" border="0" frameborder="0" marginwidth="0" marginheight="0" height="570" width="770">')
Vielen Dank nochmal, Werner Honkomp