• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Object Cache leeren

Warne

Neues Mitglied
Hallo Zusammen
Ich stelle auf einer Intranet-Seite nur eine pdf-Datei dar. Die Seite wird jede halbe Stunde aktualisiert, für den Fall an der pdf-Datei wurden Änderungen vorgenommen. Das funktioniert vom Prinzip auch, aber es passiert immer wieder, dass gerade nach einem Tageswechsel die veraltete pdf-Datei weiterhin angezeigt wird.
Folgende Meta Tag hab ich im Head schon eingetragen.
Code:
<META HTTP-EQUIV="REFRESH" CONTENT="1800; URL=http://xyz/">
        <meta http-equiv="cache-control" content="no-cache">
Leider bringt das keine Besserung und ich vermute, dass damit der Object Cache nicht beeinflusst wird.
Die pdf-Datei ist durch diesen Code auf der Intranet-Seite eingebunden:
Code:
    <body>
        <object
        width="3400"
        height="1900"
        type="application/pdf"
        data="Kalender_Mi.pdf">
        </object>
    </body>
Meine Frage an die Spezialisten, wie kann ich das Cachen der pdf-Datei verhindern? Ich möchte betonen, dass meine Kenntnisse in der HTML-Programmierung sehr rudimentär sind und ich sehr froh bin, wenn die Erklärungen auch für den Laien verständlich sind.

Vielen Dank und Gruss
Warne
 
Werbung:
Versuch mal einen sich ändernden Parameter dranzuhängen. Wenn Du auf reinem PHP bleibst, müsstest Du JavaScript hernehmen, als Besipiel:
Code:
window.onload = function() {

    var _ts = Date.now();
    var _object = document.getElementsByTagName( 'object' )[0].setAttribute( 'data', 'Kalender_Mi.pdf?t=' + _ts.toString() );

}
Dadurch "denkt" der Browser, dass es sich um eine andere Datei(-version) handelt und lädt diese neu.
Bei älteren Browsern, wie dem IE8 bspw. ist "now" glaube ich nicht definiert, da muss man sich dann mit einem Prototypen behelfen.
 
Hallo Arne
Vielen Dank für deine Antwort. Du schreibst ich müsste JavaScript hernehmen. Wie schon in meinem Ausgangspost erwähnt habe ich nur sehr rudimentäre Kenntnisse.
Vielleicht kannst du mir das Vorgehen etwas genauer beschreiben, wenn ich dir meine Situation genauer beschreibe!?
Also ich hab in meiner index.html folgendes stehen:
Code:
<!DOCTYPE html>
<html lang="de-de">
   
<script type="text/javascript" language="JavaScript">
<!--

var Dateinamen = new Array();
Dateinamen[0] = "sonntag.htm";
Dateinamen[1] = "montag.htm";
Dateinamen[2] = "dienstag.htm";
Dateinamen[3] = "mittwoch.htm";
Dateinamen[4] = "donnerstag.htm";
Dateinamen[5] = "freitag.htm";
Dateinamen[6] = "samstag.htm";

var DatumJetzt = new Date();
var DateiHeute = Dateinamen[DatumJetzt.getDay()];

window.location = DateiHeute;

// End -->
</script>
 </HTML>

Damit wird je nach Wochentag eine pdf-Datei aufgerufen, diese befindet sich im Stammverzeichnis.
In den entsprechenden Wochentags-html steht dann folgendes:

Code:
<!DOCTYPE html>
<html lang="de-de">
    <head>
        <TITLE> Plan Mittwoch  </TITLE>
        <META HTTP-EQUIV="REFRESH" CONTENT="1800; URL=http:/xyz/">
        <meta http-equiv="cache-control" content="no-cache">
    </head>
 
    <body>
        <object
        width="3400"
        height="1900"
        type="application/pdf"
        data="Kalender_Mi.pdf">
        </object>
    </body>
 </html>
Muss der von dir vorgeschlagene Code dann in die index.html Datei unter:
Code:
window.location = DateiHeute;
eingetragen werden?

Gruss
Warne
 
Werbung:
Ne, der muß per Script-Tag in die Wochentags-Dateien eingebaut werden, nach Deiner Grundlage:
HTML:
<!DOCTYPE html>
<html lang="de-de">
    <head>
        <TITLE> Plan Mittwoch  </TITLE>
        <META HTTP-EQUIV="REFRESH" CONTENT="1800; URL=http:/xyz/">
        <meta http-equiv="cache-control" content="no-cache">
    <script type="text/javascript">

        window.onload = function() {
 
            var _ts = Date.now();
            var _object = document.getElementsByTagName( 'object' )[0].setAttribute( 'data', 'Kalender_Mi.pdf?t=' + _ts.toString() );
 
        }
    </script>
    </head>
 
    <body>
        <object
        width="3400"
        height="1900"
        type="application/pdf"
        data="Kalender_Mi.pdf">
        </object>
    </body>
 </html>
 
Ne, der muß per Script-Tag in die Wochentags-Dateien eingebaut werden, nach Deiner Grundlage:
HTML:
<!DOCTYPE html>
<html lang="de-de">
    <head>
        <TITLE> Plan Mittwoch  </TITLE>
        <META HTTP-EQUIV="REFRESH" CONTENT="1800; URL=http:/xyz/">
        <meta http-equiv="cache-control" content="no-cache">
    <script type="text/javascript">

        window.onload = function() {
 
            var _ts = Date.now();
            var _object = document.getElementsByTagName( 'object' )[0].setAttribute( 'data', 'Kalender_Mi.pdf?t=' + _ts.toString() );
 
        }
    </script>
    </head>
 
    <body>
        <object
        width="3400"
        height="1900"
        type="application/pdf"
        data="Kalender_Mi.pdf">
        </object>
    </body>
 </html>

"Besser" wäre es, auf das onload zu verzichten und stattdessen direkt nach dem object-tag einfügen:
HTML:
<object ...></object>
<script>
    var _ts = Date.now();
    var _object = document.getElementsByTagName( 'object' )[0].setAttribute( 'data', 'Kalender_Mi.pdf?t=' + _ts.toString() );
</script>
Bin mir zwar nicht ganz sicher, aber ich glaube dass das "window.onload" sonst erst ausgeführt wird, nachdem das <object> geladen wurde.
 
Hallo Zusammen

Vielen Dank für eure Hilfe!
Ich probiere beide Varianten aus und melde mich.

Gruss
Warne
 
Werbung:
Bin mir zwar nicht ganz sicher, aber ich glaube dass das "window.onload" sonst erst ausgeführt wird, nachdem das <object> geladen wurde.
Stimmt... Aber ich glaube bei Deiner Variante auch, oder?
Bin mir da grad auch nicht sicher. Im Zweifelsfall erstmal das data-Attribut leer lassen, so dass er gar nichts laden kann und dann per JS setzen.
 
Stimmt, Du hast recht. onload wartet natürlich bis das Dokument vollständig geladen wurde, also auch das <object>.
Bei Deiner Variante könnte es tatsächlich sein, dass es greift bevor das Object geladen wurde.
Kommt vermutlich aber auch auf den Browser und seine Tageslaune an :-)
 
Werbung:
Hallo Zusammen
Ich hab mal beide Versionen getestet. Beim Windows Explorer spielt es keine Rolle ob mit oder ohne onload, ob vor oder nach dem Body Tag, da funktioniert es so oder so ohne Probleme. Allerdings soll die Seite auf einem Raspberry auf dem Chromium als Browser läuft dargestellt werden und da hat egal was ich in der Wochentagsdatei ändere scheinbar nichts einen Einfluss. Ich kann sogar im Object Tag unter data eine vollkommmen ander pdf-Datei eintragen, dann wird diese auch geladen, aber wenn ich dann zurück auf die ursprüngliche Datei gehe, stellt er immer noch die vorher gehende, also veraltete Version dar!?
Hat noch jemand eine Idee wie ich das ändern kann?

Gruss
Warne
 
Leider nein, das wäre auch etwas zu einfach.:(
Nach einem Neustart des Browsers lädt er tatsächlich die aktuelle Datei. Manchmal funktioniert dann die Aktualisierung regelmässig und manchmal nicht, da braucht es dann einige Refreshes bis die neue Datei angezeigt wird.

Mal noch ne Frage kann man, wenn der Browser gestartet ist, den Cache durch einen Befehl löschen?
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Zurück
Oben