- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Caching Problem bei $CMS_INCLUDE(media:"...")$ innerhalb von Medien
Hallo,
wir haben ein bei der Verwendung von $CMS_INCLUDE$ Anweiswungen innerhalb von Medien...
Der Gedanke war eine in einem Stylesheet weitere Stylesheets einzubinden bzw. zu includen und somit aus Performancegrรผnden in der gerenderten Seite nicht einzelne CSS Dateien laden zu mรผssen. Leider aktualisiert die Vorschau (auch bei forceRefresh) die Medien nicht korrekt wie es bspw. bei verschachtelten Absatz- und Formatvorlagen der Fall ist.
Ein Beispiel zur Reproduktion:
Seitentemplate:
{...}
<link rel="stylesheet" href="$CMS_REF(media:"combine_css")$" />
{...}
Medium combine_css:
$CMS_INCLUDE(media:"part_css", parse:true)$
Medium part_css:
/* beliebiges css */
Sieht man sich die Vorschau an, wird die Datei combine_css korrekt eingebunden. Darin wird nun auch korrekt der CSS Code des Mediums part_css angezeigt.
รndert man allerdings etwas an der part_css und lรคdt die Vorschau neu, wird immer der alte Inhalt der combine_css angezeigt.
Erst wenn man das aufrufende Medium combine_css neu abspeichert wird eine neue Version der Datei erzeugt und die รnderungen aus den 'includeten' Medien werden รผbernommen.
Wie kann FirstSpirit dazu gebracht werden das Medium combine_css bei jedem Reload der Vorschau neu zu erstellen?
Schรถne Grรผรe
Julius
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich glaube ich habe es jetzt selbst lรถsen kรถnnen...
Die URL zur Datei sieht beispielhaft so aus:
Wenn ich in der Datei den aktuellen Timestamp ausgeben lasse, bleibt dieser beim erneuten Aufruf der Datei immer gleich.
Wenn ich - sozusagen als hack - den Dateinamen im letzten Teil der URL รคndere, wird die Datei neu generiert (und damit auch die per CMS_INCLUDE eingebundenen Stylesheets richtig ausgegeben).
Fรผr FirstSpirit ist der Name nicht relevant, sondern die Parameter davor (Projekt-ID, Store, Sprache, Revision, StoreElement-ID). Wenn man sich an FirstSpirit 4 zurรผckerinnert war dort der Dateiname analog immer 'x.css'.
Nun habe ich mir eine kleine Formatvorlage erstellt, die mir das Link-Tag generiert und dabei in der Vorschau an die URL etwas anhรคngt:
$CMS_IF(!media.empty)$$--
--$<link rel="stylesheet" href="$CMS_REF(media:media)$$CMS_VALUE(if(#global.preview,"_"+#global.now.timeInMillis+".css"))$" />$--
--$$CMS_END_IF$
Damit wird also glรผcklicherweise 'erzwungen', dass FirstSpirit die Datei neu generiert.
Vielleicht kann ja ein eSpirit Mitarbeiter (hoffentlich) nochmal bestรคtigen, dass dieses Vorgehen keine anderen Probleme nach sich zieht.
Schรถne Grรผรe
Julius
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Julius,
einfach nach einer รnderung in der combine_css eine Leerzeile hinzufรผgen. Dann werden die Sourcen neu geparsed.
Nach der nรคchsten รnderung lรถschst Du diese einfach wieder. Und immer so weiter
Viele Grรผรe
Marcel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Marcel,
vielen Dank fรผr Deine Antwort.
Dass das funktioniert ist mir durchaus bewusst.
Erst wenn man das aufrufende Medium combine_css neu abspeichert wird eine neue Version der Datei erzeugt {...}
Ich halte das Vorgehen jedoch nicht fรผr die Lรถsung des Problems und sehe es bei der Entwicklung als รคuรerst unpraktisch an.
Schรถne Grรผรe
Julius
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Julias,
wenn nicht, dann generiere doch in die combined_css einen dynamischen/random Wert hinein, das sollte theoretisch helfen
Viele Grรผรe,
Marcel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Marcel,
kannst du mir anhand eines Beispiels erklรคren wie du das meinst? Ich bin mir nicht sicher ob ich es richtig verstanden habe.
Ich denke FirstSpirit generiert fรผr die Vorschau eine Version der Datei und merkt sich dazu die Revisionsnummer. Solange die sich nicht รคndert und das รnderungsdatum der generierten Datei die normale Cache-Lebenszeit nicht รผberschreitet - oder so รคhnlich - wird die Datei eben aus dem Cache geladen und nicht neu generiert. Dann dรผrfte es auch keine Rolle spielen ob in der Datei Anweisungen stehen (was ja der Fall ist) oder statischer Text.
Schรถne Grรผรe
Julius
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich glaube ich habe es jetzt selbst lรถsen kรถnnen...
Die URL zur Datei sieht beispielhaft so aus:
Wenn ich in der Datei den aktuellen Timestamp ausgeben lasse, bleibt dieser beim erneuten Aufruf der Datei immer gleich.
Wenn ich - sozusagen als hack - den Dateinamen im letzten Teil der URL รคndere, wird die Datei neu generiert (und damit auch die per CMS_INCLUDE eingebundenen Stylesheets richtig ausgegeben).
Fรผr FirstSpirit ist der Name nicht relevant, sondern die Parameter davor (Projekt-ID, Store, Sprache, Revision, StoreElement-ID). Wenn man sich an FirstSpirit 4 zurรผckerinnert war dort der Dateiname analog immer 'x.css'.
Nun habe ich mir eine kleine Formatvorlage erstellt, die mir das Link-Tag generiert und dabei in der Vorschau an die URL etwas anhรคngt:
$CMS_IF(!media.empty)$$--
--$<link rel="stylesheet" href="$CMS_REF(media:media)$$CMS_VALUE(if(#global.preview,"_"+#global.now.timeInMillis+".css"))$" />$--
--$$CMS_END_IF$
Damit wird also glรผcklicherweise 'erzwungen', dass FirstSpirit die Datei neu generiert.
Vielleicht kann ja ein eSpirit Mitarbeiter (hoffentlich) nochmal bestรคtigen, dass dieses Vorgehen keine anderen Probleme nach sich zieht.
Schรถne Grรผรe
Julius
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Julius,
genau solch eine Lรถsung meinte ich mit der Aussage, einen Random-Wert in die Datei zu schreiben
Viele Grรผรe
Marcel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Marcel,
ja - nur nochmal zum Verstรคndnis: Es hat keinen Effekt innerhalb der Datei Werte per Templatesprache dynamisch zu setzen. Der Caching-Mechanismus von FirstSpirit sorgt dafรผr, dass die Datei - wenn sie einmal erzeugt wurde - gar nicht mehr neu eingelesen/generiert wird, sondern lediglich die Version aus dem Cache geladen wird.
Dass der Workaround/Hack mit dem รndern des Dateinamens รผberhaupt funktioniert ist meiner Einschรคtzung nach Glรผck.
Der Dateiname wird vom System bei der Generierung nicht verwendet, allerdings scheint die URL sozusagen als Key fรผr den Cache zu dienen.
Dennoch vielen Dank fรผr die Mitarbeit!
Ich hoffe nur dieser Mechanismus funktioniert auch auf lange Sicht. Vielleicht meldet sich ja noch jemand von eSpirit zur Sache.
Schรถne Grรผรe
Julius

