Zur Navigation

ExpiresByType für eine Datei

1 Markus.w (Gast)

Hallo alle zusammen,

Ich habe in meiner htaccess folgendes drinn:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
...

Nun habe ich aber eine einzige Datei (news-Short.js), welche als einzigr IMMER neu geladen werden soll.

Wie kann ich angeben, dass diese Datei immer geladen werden soll?

Vielen Dank für Hilfe...


13.09.2018 14:51

2 Jörg Kruse

Du kannst die Direktiven in einem FilesMatch-Container unterbringen, der den Dateinamen ausschließt:

<IfModule mod_expires.c>
  <FilesMatch "(?<!news-Short\.js)$">
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType text/javascript "access plus 1 month"
  </FilesMatch>
</IfModule>

Siehe auch:

https://serverfault.com/questions/78624/apache-2-negative-filesmatch-filesnotmatch

Allerdings wird der Browser dadurch nicht gezwungen, die Datei bei jedem Aufruf einer Seite neu zu laden. Das erreicht man besser mit einem sich (ständig) ändernden Parameter, der an die URL gehangen wird; z.B. mithilfe von PHP:

<script src="news-Short.js?v=<?= time() ?>"></script>

13.09.2018 15:50

3 Markus.w (Gast)

Vielen Dank für die Infos,

Habe die .htaccess angepasst.

Der Paramter v=<?= time() ?> setzt eine PHP Datei voraus, oder?

ich habe rund 800 html Dateien. Die kann ich nicht umbenennen.
Gibt es eine HTML Lösung?

Viele liebe Grüsse
Markus

13.09.2018 22:08

4 Käptn Blaubär

ich habe rund 800 html Dateien. Die kann ich nicht umbenennen. Gibt es eine HTML Lösung?

Du kannst in Deiner .htaccess dafür sorgen, daß auch html-Dateien php-geparst werden, sofern der Webhoster das zuläßt. Frage Deinen Webhoster danach.

Das hat ja auch noch viele andere Vorteile.

13.09.2018 22:35

5 Jörg Kruse

Falls mod_headers zur Verfügung steht, könntest du darüber noch probieren, die Header für Cache-Control, Pragma und Expires so zu setzen, dass nicht gecached wird:

<Files news-Short.js>
    <IfModule mod_expires.c>
        ExpiresActive Off
    </IfModule>
    <IfModule mod_headers.c>
        Header set Cache-Control "no-cache, no-store, must-revalidate"
	Header set Pragma "no-cache"
	Header set Expires 0
     </IfModule>
</Files>

... und beim Neuaufruf der news-Short.js im Browser die HTTP-Header überprüfen

Das funktioniert allerdings erst ab dem nächsten Direkt-Aufruf. Solange der Browser die Datei noch aus seinem Cache lädt, erfährt er ja nichts von den Headern.

14.09.2018 09:51 | geändert: 14.09.2018 09:55

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]