[Caching] Dataverkeer beperken

Pagina: 1
Acties:

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Ik ben bezig met het optimaliseren van een website.

De hele website is geschreven in php, en de content is wel dynamic, maar veranderd hooguit 1x per dag.

Wat ik tot nu toe heb gedaan:

- output_handler = ob_gzhandler
- betere database connectie handling.

Als ik in de usage stats van de server kijk zie ik het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
Hits by Response Code 
 
Undefined response code 173 
Code 200 - OK 7624391 
Code 206 - Partial Content 10668 
Code 301 - Moved Permanently 44 
Code 302 - Found 13720 
Code 304 - Not Modified 14948938 
Code 400 - Bad Request 81 
Code 403 - Forbidden 47 
Code 404 - Not Found 82333 
Code 408 - Request Timeout 2213


Over die Code 304 heb ik het volgende gevonden:

code:
1
2
3
4
5
Code 304 - Not Modified - If the client has done a conditional 
GET and access is allowed, but the document has not been 
modified since the date and time specified in If-Modified-Since 
field, the server responds with a 304 status code and does not
send the document body to the client.


Wat mij in het bijzonder opvalt is dat er heel veel requests zijn met Code 304, maar ik vraag mij af of ook bij PHP bestanden die "document body" niet wordt gestuurd. Daarom kwam ik op het idee om de pagina's te gaan cachen. Nu kom ik een aantal dingen tegen:

- Apache Content Negotiation
- Mod-expires (Apache module) (is aanwezig, niet enabled)
- Meta tags: <meta http-equiv="Pragma" content="cache">
- Cache-Control: must-revalidate
Cache-Control: max-age=3600
Cache-Control: cache
- en ik kwam ook nog een .htaccess file tegen voor cachen, maar ik ben de link even kwijt.

Ik heb het idee dat sommige van bovenstaande caching methodes gedateerd zijn.

Mijn vraag is: Hoe cache ik zoveel mogelijk? Plaatjes, maar is het ook nog mogelijk om de index.php bijvoorbeeld te cachen zonder die eerst static te maken naar index.html.

Het liefst zou ik mijn index.php static maken, (cachen op de server) maar ik loop bovendien tegen het fenomeen aan, dat ob_gzhandler (van php) zich überhaupt niet met html bestanden bemoeit. Zou ik daarvoor soms nog een extra apache gzip_module moeten installeren, of is header("content-type: gzip"); ook al voldoende.

Ik blijf er iig vrij nuchter onder....


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Ik heb nu mod_gzip geinstalleerd, en ob_gzhandler uitgeschakeld. Hij comprimeert nu zowel html als php bestanden. Echt super!

De vraag over de cache blijft staan. Werkt cachen eigenlijk nog wel als het bestand eerst gecomprimeerd wordt gestuurd?

Ik blijf er iig vrij nuchter onder....


Verwijderd

Wat je kunt doen is je script elke keer dat de frontpage veranderd een nieuw .html bestand laat genereren, dan hoef je je verder geen zorgen te maken over client side caching, dat regelt Apache dan wel :) En de PHP interpreter wordt niet aangeroepen wat ook processor kracht scheelt.

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Ik heb nu een mkindex.php die een nieuw index.html bestand genereerd.

Scheelt niet alleen PHP executie tijd, maar bovendien 10 queries + db-connectie per hit.

De vraag blijft: hoe zit het met cachen op de client? Dwingt apache de client automatisch om jpeg/gif/html/css/js bestanden te cachen, of moet ik dat zelf doen via 1 van bovenstaande methodes.

Ik blijf er iig vrij nuchter onder....


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Daar is mod_expire voor van apache :)
Die kan dat heel netjes regelen. Standaard doet apache wel iets aan cache-control, maar mod_expire is er expliciet voor bedoeld.