code:
1
| <meta http-equiv="pragma" content="no-cache"> |
Okee, das voor niet cachen. Wat zou je dan weg moeten halen om het wel te cachen?
Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.
* Limhes doet es een gooi:Op dinsdag 25 juni 2002 22:54 schreef Prammenhanger het volgende:
code:
1 <meta http-equiv="pragma" content="no-cache">
Okee, das voor niet cachen. Wat zou je dan weg moeten halen om het wel te cachen?
code:
1
| <meta http-equiv="pragma" content="cache"> |
Dat cachen snap ik wel. Alleen de php pagina moet wel gecacht worden. Het gaat hier om .js bestandjes met alleen javascript. Hoe geef ik daar een header aan mee dan?
Ja dan moet ik het dus met een httpd.conf doen. Kan het ook met op een andere manier. Ik kan namelijk niet httpd.conf aanpassen. Kan het ook op een andere manier. Zoals ik al eerder vroeg, met een htacces bijvoorbeeld?
Je hebt toch ergens wel een HTML pagina die door je php uitgespuwed wordt ?Op dinsdag 25 juni 2002 23:02 schreef Gerwin het volgende:
Dat cachen snap ik wel. Alleen de php pagina moet wel gecacht worden. Het gaat hier om .js bestandjes met alleen javascript. Hoe geef ik daar een header aan mee dan?
Ik heb een php bestand die maakt random datums aan, en op basis daarvan included hij .js bestandjes. Nu wil ik dat bij een herhaling de bezoeker niet telkens opnieuw die js bestandjes hoeft te laden maar dat die uit de cache komen, alleen hoe geef ik aan een .js bestandje een header mee? Kan ik er gewoon een .php van maken en dan in de include aangeven dat het type/javascript is?
niet waar, cache-control is een HTTP1.1-header die je juist in je webserver kunt instellen.Op dinsdag 25 juni 2002 22:47 schreef Predator het volgende:
Client caching stel je in met cache regels in de HTML header.
Niet op de webserver.
[forum=24] -> [forum=13]
als je httpd.conf niet kunt aanpassen kun je dat in een .htaccess doen, maar evengoed de header door php laten versturen: header("cache-control: expires ".time()+1000) late-avond-gok
de exacte syntax kun je op w3c.org in de http-specs nalezen ( http://www.w3c.org/HTTP/ )
pragma is enkel een http1.0 header en is ontstaan door het ontbreken van een specifieke cache-control header, pragma is eigenlijk bedoeld voor extra notulaties en de implementatie wil wel eens buggy/onbetrouwbaar zijn, kies eerder voor cache-control.
uiteindelijk kun je ook <meta>-tags in een html-pagina specificeren, maar dat is nogal nutteloos als het om .js-jes gaat en is ook beneden de eerder genoemde opties te prefereren.
en nee, javascripts hebben een eigen cache-control, die niet bepaald word door de meta's in de pagina's waarbinnen ze ge-included worden.
ook de mimetype kun je in de header specificeren, maar pas wel op soms willen hier bugs mee optreden (alhoewel ik me dat herinner van gzipped content, niet van file.js.php-tjes)
sowieso zou officieel als je een script included via <script type="text/javascript"> dit specifiek als javascript uitgevoerd moeten worden, enkel wil mozilla dat wel eens misinterpreteren en de MIMETYPE precedence geven
Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen
Moet ik dan in de .htacces
Zetten om de .js bestandjes gecacht te krijgen?
code:
1
| header("cache-control: expires ".time()+1000) |
Zetten om de .js bestandjes gecacht te krijgen?
nee htaccess wordt niet door de php-engine gerenderd.Op vrijdag 28 juni 2002 01:01 schreef Gerwin het volgende:
Moet ik dan in de .htacces
code:
1header("cache-control: expires ".time()+1000)
Zetten om de .js bestandjes gecacht te krijgen?
heb even op google gezocht en er zijn merdere mogelijkheden:
http://www.codestyle.org/codestyle/log/2001-04.shtml
als je webserver mod_expires ondersteund kun je een bijna grammaticale syntax gebruiken en voegt deze lib automatisch wanneer gewenst http1.0 alswel http1.1-headers toe
code:
1
2
3
4
5
6
7
8
9
10
| ExpiresByType text/javascript "access plus 1 month" # Cache-Control configuration (HTTP 1.1) # -------------------------------------- # Requires mod_headers and httpd.conf: AllowOverride FileInfo # Assumes Apache sets appropriate max-age value via Expires # settings above # Try to ensure that all documents are validated when appropriate Header append Cache-Control "must-revalidate" |
(voorbeeld uit bovenstaande link ietwat aangepast voor text/javascript, maar verder direct copy-and-pasted van
http://www.codestyle.org/codestyle/log/2001-04.shtml)
als je webserver dit niet ondersteund (mijn eigen apache ondersteund dit wel, maar staat per default niet aan; geloof dat dat standaard altijd zo is, als je voor jezelf wil checken kun je waarschijnlijk phpinfo() gebruiken)
kijk ook naar Ken Coar's tutorial over .htaccess voor apache:
http://apache-server.com/tutorials/ATusing-htaccess.html
Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen
Ok ik heb het ik heb nu dit in de directory staan waar ik de js bestandjes heb:
.htacces
Kan dit zo?
.htacces
code:
1
2
3
4
5
6
7
8
9
| # Expires configuration (HTTP 1.0) # -------------------------------- # Requires mod_expires and httpd.conf: AllowOverride Indexes # Switch on expires header processing ExpiresActive On # By default, expire all documents 7 days after first access ExpiresDefault "access plus 1 month" |
Kan dit zo?
Ok dan gaan we hier verder na eenleiding van [rml][ APACHE] Bestandjes blijven maar cachen[/rml]. Kortom: het werkt niet... hoe kan dat?
Ik heb dat geprobeerd met en zonder twee s-en en ook met en zonder twee t's. Probleem is niet meer het cachen van de .js bestandjes dat lijkt dus wel goed te gaan. Echter. Hoe kan het zo zijn dat er blijkbaar nog oude bestandjes geladen worden op de site omdat er links worden geklikt op een synamische PHP pagina. Heeft iemand dit meer gehad dat je dus een nieuwsbericht maakt en die included dat hij weken of maanden later nog geklikt word?
Ik wil dat de js bestanden gecacht worden, maar ze moeten natuurlijk NIET verschijnen op een dynamische pagina enkele weken later als er dus al weer nieuwe bestandjes zijn die er zijn.Blaise schreef op 19 oktober 2002 @ 19:29:
ehmmmm
[noob]
wordt .JS dan niet automatisch gecached? Of ligt dit aan je host?
Ik zal het iets duidelijker maken. Ik heb de volgende bestandjes. Elke dag laad ik een nieuw bestandje op en schuiven op de site de bestandjes uit het verleden door, zodat hij de laatste 1 bestandjes laat zien.
Bestandjes zijn:
20021001.inc.js
20021002.inc.js
20021003.inc.js
20021004.inc.js
20021005.inc.js
Eerst het jaar, dan maand, en dan de dag. Deze bestandjes include ik op de volgende manier:
Deze roep ik op met 7 keer opeenvolgend:
PHP:
1
2
3
| $Feerste=date("Ymd",mktime(0,0,0,date("m"),date("d")-0,date("Y"))); echo("<script type='text/javascript' src='data/" .$Feerste . ".inc.js'></script>"); |
Echter, het blijkt uit mijn log dat er op de site op de één of andere manier toch op een bestandje van bijvoorbeeld 1 maand geleden geklikt kan worden.
ooooooooooooooooooooooooow... nee, dan zit het wel snor. Ik was al bang dat ik in mijn .htaccess moest gaan klooien.
(enige juiste spelling dus: .htaccess
)
(enige juiste spelling dus: .htaccess
Misschien ligt het wel aan die htsccess hoewel ik voor een grote vraag sta hoe een dynamische php pagina die niet gecacht word toch een .js uit het verleden kan weergeven. Heb je enig idee?Blaise schreef op 19 oktober 2002 @ 19:41:
ooooooooooooooooooooooooow... nee, dan zit het wel snor. Ik was al bang dat ik in mijn .htaccess moest gaan klooien.
(enige juiste spelling dus: .htaccess)
[speculatie]
Ik weet niet precies hoe een cache werkt per browser, maar misschien had een ouwe browser de pagina gecached, maar niet de .js, zodat de browser alleen de (oude) .js ging laden. Want niet alle browsers updaten hun cache.
Maar gebeurt het dan op grote schaal? of was het gewoon een keertje gebeurd?
Ik weet niet precies hoe een cache werkt per browser, maar misschien had een ouwe browser de pagina gecached, maar niet de .js, zodat de browser alleen de (oude) .js ging laden. Want niet alle browsers updaten hun cache.
Maar gebeurt het dan op grote schaal? of was het gewoon een keertje gebeurd?
Die javascript bestandjes die blijven altijd hetzelfde alleen nummer ik dingen door. Dus in de PHP file moet hij elke dag de laatste 7 dagen aan bestandjes oproepen en de oude gewoon met rust laten. Die cache is eigenlijk bedoeld voor mensen die dagelijks de site bezoeken zodat ze enkel het laatste js bestandje op moeten halen. Hoe kan het dan zo zijn dat de PHP file een volgende js op moet halen 20021019.inc.js bijvoorbeeld vandaag en dat ik toch kliks geregistreerd zie uit bijvoorbeeld 20020930.inc.js dat bestandje hoort niet meer aangewezen te worden volgens het PHP script dat ik hierboven genoemd heb. En ja, dit gebeurt toch op redelijk grote schaal, ik denk dat ik hierdoor veel kliks en veel bezoekers kwijtraak omdat bezoekers blijkbaar veel oudere versies zien van de gegevens.Blaise schreef op 19 oktober 2002 @ 20:14:
[speculatie]
Ik weet niet precies hoe een cache werkt per browser, maar misschien had een ouwe browser de pagina gecached, maar niet de .js, zodat de browser alleen de (oude) .js ging laden. Want niet alle browsers updaten hun cache.
Maar gebeurt het dan op grote schaal? of was het gewoon een keertje gebeurd?
als je website in GOOGLE staat, die kan ook een cache uitvoeren, en pakt daar dan toch jouw bestanden. Misschien ligt het daaraan. Ik heb namelijk ook bestanden van mij in GOOGLE zien staan die allang niet meer op die webserver staan.. is HEEL vervelend.Gerwin schreef op 19 oktober 2002 @ 19:37:
Echter, het blijkt uit mijn log dat er op de site op de één of andere manier toch op een bestandje van bijvoorbeeld 1 maand geleden geklikt kan worden.
Dat kan dan ook in opera 6.05 gebeuren, wan die is bij mij erg gehecht aan zijn cache. Mogelijk ook andere browsers.
Misschien kan je een subtiele refresh toevoegen?
Nadelen - Wekt irritatie op, modemers zullen niet blij zijn dat ze 2x zo lang moeten wachten, en het kost dataverkeer.
Misschien kan je een subtiele refresh toevoegen?
Nadelen - Wekt irritatie op, modemers zullen niet blij zijn dat ze 2x zo lang moeten wachten, en het kost dataverkeer.
Pagina: 1