2010-08-11 3 views
5

Ich habe durch die Angabe querystrings ähnlich wie auf verschiedenen Websites, wie Entwickler-Version ihre css/Javascripts Dateien gesehen:Wie können Dateien im Abschnitt <HEAD> versioniert werden?

<head> 
    <link rel="stylesheet" href="css/style.css?v=1"> 
    <script src="js/helper.js?v=1"> 
</head> 

Wie das geschehen ist? Ist es eine gute Übung? Ich habe mich umgesehen, aber anscheinend suche ich nicht nach den richtigen Begriffen. Wenn es darauf ankommt, verwende ich ASP.NET.

Edit:: Ich habe gerade bemerkt (über Firebug), dass, wenn ich "meine" Version (? V = 1) "werde" sie immer laden und überschreibt immer den Cache. Gibt es einen Weg dahin?

Vielen Dank im Voraus.

Antwort

4

Sie sind nicht wirklich versioniert. Wir tun das, weil bestimmte Browser die Stylesheets nicht immer korrekt anfordern (sie werden nicht einmal nach einer letzten Änderung suchen). Um sie zu zwingen, eine neue Anfrage zu machen, können Sie die Nummer in Ihrer HTML-Datei, die darauf verweist, ankreuzen. Es ist eine Art Hack, aber es funktioniert.

+1

Das ist interessant. Können Sie näher erläutern, welche Browser problematisch sind? Erhalten Sie das gleiche Verhalten, wenn Sie ein E-Tag anstelle oder in Verbindung mit einem Datum der letzten Änderung verwenden? –

+0

Es ist vor allem ein Problem der Zwischenspeicherung. Wenn der Browser "style.css" herunterlädt und diese später von einer Seite angefordert wird, verwendet der Browser höchstwahrscheinlich die Version, die er bereits heruntergeladen hat. Wenn aber 'style.css? V = 1' statt' style.css' angezeigt wird, wird es als eine andere Datei angezeigt und die neue Version heruntergeladen. –

+0

Richtig, aber der Browser soll das letzte Änderungsdatum und/oder E-Tag der Datei liefern, die in seinem Cache gespeichert ist, wenn er diese Datei vom Server anfordert. Dies gibt dem Server die Möglichkeit, HTTP304 (nicht modifiziert) anstelle der gesamten Datei zurückzugeben. Ich würde gerne mehr darüber wissen, wann und warum dieser Mechanismus fehlschlägt. –

2

Dies hilft beim Zwischenspeichern, wenn Sie es wollen, und erzwingen das Herunterladen, wenn Sie es nicht möchten. Dateien werden basierend auf ihrem Pfad zwischengespeichert. Wenn also der Pfad derselbe ist, kann er aus dem Cache ziehen. Wenn sie jedoch anders sind, also eine neue Version, würde sie den Cache nicht verwenden, sondern die neue Datei ziehen. Zumindest habe ich das benutzt.

1

Sie tun dies, um das Caching für den Browser zuverlässiger zu machen. Sie können die Version manuell hinzufügen und sie jedes Mal erhöhen, wenn Sie die Datei ändern. Auf diese Weise denkt der Browser, dass er eine neue Datei hat und lädt sie sicher herunter.

Ich weiß nicht, wie dies automatisch in ASP.NET zu tun, Ruby on Rails zum Beispiel überprüft den letzten geänderten Zeitstempel für die Datei und fügt diese als Versionsnummer der Datei hinzu. Ich bin mir sicher, dass Sie in ASP.NET etwas Ähnliches tun können.

+0

Ich habe gerade bemerkt (via Firebug), dass wenn ich meine Dateien (? V = 1) "versioniere", sie immer geladen werden und immer den Cache überschreiben werden. Gibt es einen Weg dahin? – rebelliard

Verwandte Themen