Autor |
Nachricht |
m
Moderator Threadersteller
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 17.03.2010 16:41
Titel Caching | php => javascript |
|
|
Hey. Ich möchte gerne dynamisch erzeugte javascript cachen, habe damit aber nun folgendes Problem:
Ich leite alle Anfragen zu index.php um
Code: | RewriteCond %{REQUEST_URI} !^/(bestimmtes_verzeichnis)
RewriteRule . index.php [QSA,L] |
Nun wird zum Beispiel http://example.org/eine_datei.js angefordert
wodurch dieses php script ausgeführt wird (gekürzt):
Code: | header("Content-Type: application/x-javascript");
header("Last-Modified: " . gmdate("D, d M Y H:i:s", strtotime($date) . " GMT");
echo 'document.write("test");'; |
htaccess ausschnitt:
Code: | <IfModule mod_headers.c>
<FilesMatch "\\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
<FilesMatch "\\.(css)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\\.(js)$">
Header set Cache-Control "max-age=216000, private"
</FilesMatch>
<FilesMatch "\\.(html|htm|php)$">
Header set Cache-Control "max-age=3600, private, must-revalidate"
</FilesMatch>
</IfModule> |
Nun wird die Datei allerdings mit max-age=3600 ausgeliefert.
Code: | Date: Wed, 17 Mar 2010 15:42:06 GMT
Server: Apache/2.2
X-Powered-By: PHP/5.2.12
Expires: Thu, 18 Mar 2010 15:42:07 GMT
Cache-Control: max-age=3600, private, must-revalidate
Pragma: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 49
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: application/javascript
200 OK
|
Das liegt an der Rewrite Rule zu index.php? Nur wie löse ich das jetzt am besten?
Am besten ich prüfe auf die Endung der REQUEST URI oder? Bin nur leider damit
überfragt wie ich dass in dem htaccess file am besten löse.
Vielen Dank
Zuletzt bearbeitet von m am Mi 17.03.2010 17:15, insgesamt 6-mal bearbeitet
|
|
|
|
|
Eistee
Administrator
Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht:
|
Verfasst Mi 17.03.2010 20:51
Titel
|
|
|
Also ich denke mod_headers geht mit Filesmatch wirklich auf die physikalische Datei, in deinem Fall die index.php. Es werden ja auch die "richtigen" Header gesendet.
Ich würde es so lösen: Mit mod_headers nur wirklich statische Dateien behandeln, also .php raus. Ist auch sinnlos, denn in deiner/deinen php(s) kannst du ja beliebige cache header je nach Wunsch selbst senden.
|
|
|
|
|
Anzeige
|
|
|
m
Moderator Threadersteller
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 17.03.2010 21:12
Titel
|
|
|
Eistee hat geschrieben: | Ich würde es so lösen: Mit mod_headers nur wirklich statische Dateien behandeln, also .php raus. Ist auch sinnlos, denn in deiner/deinen php(s) kannst du ja beliebige cache header je nach Wunsch selbst senden. |
Hey, danke, genauso habe ich es jetzt auch gelöst. Ich dachte nur evtl gibt es eine
Möglichkeit auf die angeforderte URI zu reagieren.
|
|
|
|
|
Eistee
Administrator
Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht:
|
Verfasst Mi 17.03.2010 21:50
Titel
|
|
|
Hm, dafür müsste mod_headers bei den Filesmatch auch regex können, kann es das?
|
|
|
|
|
m
Moderator Threadersteller
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 17.03.2010 21:59
Titel
|
|
|
Ja, nur bezieht sich die FilesMatch directive ja auf die tatsächliche angeforderte Datei.
Ich denke LocationMatch wäre passend, lässt sich aber nicht in htaccess Dateien ausführen.
|
|
|
|
|
Eistee
Administrator
Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht:
|
Verfasst Mi 17.03.2010 22:03
Titel
|
|
|
Achso, ich dachte du willst die index.php ausschliessen und alle anderen .php im Filesmatch lassen.
|
|
|
|
|
|
|
|
Ähnliche Themen |
[PHP] file based caching
Smarty Templates, include, caching
Flash und XML Datei: Wie caching im Browser verhindern?
[javascript] mit <select> feld wert an javascript funk
javascript in php
ist das javascript ?
|
|