Forum Plugins
[Gelöst] Plugin Template/Seite neu laden erzwingen
Zu meinem Problem. Ich habe ein Plugin geschrieben und verschiedene Menupunkte erstellt und denen ein Formlink der Art "plugin:pluginname/templates/template1.html" zugewiesen. Wenn ich auf den Menupunkt gehe, dann wertet meine Aktionsweiche den Namen des Templates aus und ruft eine passende Methode aus. Soweit so gut. In der Methode wird mit der Grafikbibliothek von PHP dynamische Grafiken erzeugt. Immer gleicher Dateiname, aber sieht immer anders aus. Wenn ich die Seite über den Menupunkt aufrufe, dann ist das auch immer richtig.
Nun das Problem: Auf einer anderen Seite habe ich Querlinks zu der Seite mit der Grafik. Da stehen also Links drin wie [a href="/plugin.php?menuid=27
&template=pluginname/templates/template1.html¶meter=25"]
Wenn ich diesen Link anklicke, dann lande ich auch auf der Seite mit der Grafik. Alle Daten passen zu dem in der URL übergebenen PArameter, nur die Grafik ist noch die, die ich vorher über den Menupunkt aufgerufen habe. Auf dem Server ist die Grafik aber schon aktuelisiert.
Nun die Fragen.
1. Kann ich einen Reload des Templates irgendwie erzwingen.
2. Wann genau wird das Template an den Browser geschickt? Kann ich sicher stellen, dass das erst geschieht, wenn mein Skript komplett durch aus, damit beim Laden der Seite die Grafiken schon aktuell sind?
Re: Plugin Template/Seite neu laden erzwingen
Hi Sascha,
ich denke das ist ein Smarty Caching Problem... so adhoc weiß ich da grad auch keine Lösung...
Viele Grüße,
Carsten
Re: Plugin Template/Seite neu laden erzwingen
Das ist schon mal ein Ansatz zum Googeln. Danke!
Re: Plugin Template/Seite neu laden erzwingen
Komme ich denn irgendwie an die VAriable $smarty in meinem Plugin-Code ran? ISt die irgendwo referenziert?
Habe es mit
global $smarty
versucht, doch das funktioniert nicht.
Re: Plugin Template/Seite neu laden erzwingen
Hallo Sascha,
ich denke eher es liegt am Browser-Cache. Hat der Browser ein mal ein Bild namens "xyz.jpg" geladen, lädt er dieses Bild mit demselbem Namen nicht soch ein mal, auch wenn es sich in der Zwischenzeit auf dem Server geändert hat.
Ein Link auf deine Seite würde evtl. weiter helfen.
Re: Plugin Template/Seite neu laden erzwingen
Hi Stephan,
das mit dem Link habe ich jetzt erst einmal organisiert. Das Plugin habe ich nämlich bei mir live schon installiert. Da es aber erst zu 90% fertig ist, soll das noch nicht jeder sehen.
Ok, loggt euch mit Testuser/Testuser auf http://www.werdermania.de ein. Dann sollte der neue Menupunkt Statistik auftauchen.
Dann um das Verhalten zu testen erst einmal
1. Direktvergleich->Bayern München auswählen->Zeige Gegner Vergleich
2. Rekorde->Link Arminia Bielefeld in den höchsten Heimsiegen anklicken.
In vielen (nicht allen) Fällen ist die Bilanz zwar richtig, doch es wird noch die Bayern München Grafik angezeigt. Einmal auf "Zeige Gegner Vergleich" klicken und der Spuk ist vorbei.
Denke auch, dass es am Browser Chace liegt, da das Phänomen bei POST nicht auftaucht. Nur das GET macht Probleme.
Re: [Gelöst] Plugin Template/Seite neu laden erzwingen
So, ich glaube ich habe den Browsercache ausgetricks. Habe einfach an das Image Tag der HTML Seite eine sinnlose VAriable dran gehangen.
[img src="bild.png?timestamp={$timestamp}"]
Die Variable fülle ich dann immer mit time() im Skript. Keine elegante Lösung, doch sie funktioniert. Danke für den Tipp mit dem Cache.
Re: [Gelöst] Plugin Template/Seite neu laden erzwingen
Hallo sascha,
warum legtst du nicht pro "Gegener" drei einzelne Bilder an?
Gedankenspiel:
2 Besucher rufen fast zeitgleich die Seite auf. A kurz vor B. Dann passiert folgendes:
A erzeugt das Bild und bekommt den HTML-Code.
B erzeugt neues Bild.
A hat HTML-Code jetzt fertig geladen und Browser läd nun die "intergrierten Elemente" sprich Bilder..
Was sieht A?
Re: [Gelöst] Plugin Template/Seite neu laden erzwingen
@Stephan:
Weil ich dann halt 100 Grafiken, statt 3 hätte. Meine Seite hat nicht so viel Zulauf. Da kann ich mit deinem beschriebenen Szenario des Parallelzugriffs leben. Das tritt ja wirklich nur auf, wenn zwischen HTML Code laden und Bilder laden, die Bilder verändert werden. Für den Fall, dass sich der Benutzer die Seite bereits betrachtet und dann ein Parallelzugriff ist, ist ja alles in Ordnung, weil der erste Benutzer ja noch die alte Grafik hat, so lange er nicht die Seite aktualisiert. Wenn er das tut, dann wird ja auch wieder die Grafik ausgetauscht.
Trotzdem danke für den Hinweis. Ich habe aber ca. nur 100 Besucher pro Tag. Da werden vielleicht 20 die Statistik anschauen. Ich kann jetzt nach Poissonverteilung ausrechnen, wie wahrscheinlich es ist, dass davon 2 in einem Zeitfenster von 5 Sekunden da sind (sagen wir mal so lange braucht die Seite zum Laden). Eher unwahrscheinlich.
Sie müssen sich anmelden, um einen Beitrag schreiben zu können.