Überflüssige automatisch an gehängte Parameter

Hallo,

ich habe folgendes Problem:

Wenn ich mittels <%= javascript_include_tag “scriptaculous” %> eine
Javascript-Datei einbinde, erhalte ich im Sourcecode

Es wird also ein Zeitstempel mit angehängt.
Leider zwingt dieser Zeitstempel den Browser diese Include zu cachen,
wodurch die Datei bei jedem Seitenaufruf neu geladen werden muß.

Wo und wie kann ich das Hinzufügen dieses Parameters abstellen?

LG und danke im voraus,

Stephan

Hallo Stephan,

Wenn ich mittels <%= javascript_include_tag “scriptaculous” %> eine Javascript-Datei einbinde, erhalte ich im Sourcecode

Es wird also ein Zeitstempel mit angehängt.
Leider zwingt dieser Zeitstempel den Browser diese Include zu cachen, wodurch die Datei bei jedem Seitenaufruf neu geladen werden muß.

???

Wo und wie kann ich das Hinzufügen dieses Parameters abstellen?

Das weiss ich nicht.
Aber die Idee dahinter ist genau das Cachen zu optimieren.
Da sich der Link aendert, wenn sich die Datei aendert (das ist NICHT
die aktuelle Zeit wie du vielleicht meinen koenntest sondern das
Aenderungsdatum der Datei), kann man per Cache Pragmas ewige Gültigkeit
der Datei mitteilen und bei Änderungen werden die trotz Browser-Cache
sofort wirksam.
Also warum willst du den Parameter loswerden?

HTH
Morus

On Friday 01 February 2008, Stephan B. wrote:

Leider zwingt dieser Zeitstempel den Browser diese Include zu cachen,
wodurch die Datei bei jedem Seitenaufruf neu geladen werden muß.

Das stimmt nicht. Der Zeitstempel entspricht nicht der aktuellen
Uhrzeit, sondern der letzten Änderungszeit der Datei (auch für CSS und
Bilder). Der Browser cachet die Datei, nachdem er sie das erste Mal
geladen hat. Bei Verweisen auf bereits gecachete URLs sendet der
Browser einen “bedingten” (conditional) GET-Request, in dem der
If-Modified-Since-Header auf das letzte, dem Browser bekannte
Änderungsdatum gesetzt ist. Wenn die der URL entsprechende Ressource
nicht geändert wurde, schickt der Server den Statuscode 304 (“Not
Modified”) und ein leeres Dokument
zurück.
Selbst dieser Request lässt sich noch einsparen, indem der Server dem
Browser in Response-Headern mitteilt, dass bestimmte Ressourcen lange
gecachet und aus dem Cache bedient werden können.

Damit auch für derart gecachete Ressourcen Änderungen sofort wirksam
werden, also nicht die gecachte Version, sondern die aktuelle verwendet
wird, hängt Rails den Zeitstempel an. Die Version mit dem neuen
Zeitstempel ist noch nicht gecachet, wird also auf jeden Fall frisch
vom Server geladen.

Siehe auch die API-Doku zu AssetTagHelper.

Wo und wie kann ich das Hinzufügen dieses Parameters abstellen?

Ich glaube kaum, dass das sinnvoll ist. Mit

export RAILS_ASSET_ID=“”

kannst du einen eigenen, leeren “Timestamp” definieren. Für Details
schau in den Sourcecode von AssetTagHelper.

Michael


Michael S.
mailto:[email protected]
http://www.schuerig.de/michael/