Toon posts:

PHP automatisch cachen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met mijn pagina's in een cache te knikkeren. Ik roep pagina's aan met index.php/news/december2000. Eerste var (news) is het script en de rest wordt meegegeven. Door de sessie heen heb ik een $user object met alle info van de ingelogde user.

Hieronder ultra-pseudo-code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
include html_header // is voor elke user anders, niet echt handig om te cachen

if niet_gecached (request)

    start_cache ()// start output buffertje

    include pagina_script

    include html_footer // altijd hetzelfde

    end_cache (request) // flushed output buffer en slaat 'm op
    
end_if

Ik heb een cache dir met 001.html tot 100.html en een cache.index file. Index file heeft een index van alle html files samen met bijbehorende request. bv
code:
1
2
3
4
cache.index

/news/december2001 = 001.html
/news/januari2002 = 002.html

Opzich gaat alles goed. Alles gaat lekker automatisch. Maar ik heb ook pagina's verschillen per user (bv. een highlight op nieuwe berichten sinds je laatste bezoek). Zo is de pagina index.php/msgboard voor Henk en Piet verschillend, maar voor het cache systeem gelijk.

Hoe kan ik dit een beetje elegant oplossen? in principe weet ik van te voren nog niet wat er op de pagina komt te staan, omdat elk script zijn eigen deel van de site voor rekening neemt.

  • Grum
  • Registratie: Juni 2001
  • Niet online
door de paginas dynamisch te laten genereren :+

je kan het niet elegant oplossen als je meer dan zeg 5 users hebt :)

Verwijderd

Topicstarter
include pagina_script is een script wat de pagina dynamisch samenstelt.

Ik zat daarom zelf te denken dat voor pagina's waar highlights oid je { var border } te zetten. En dan de volgende keer de cache of gegenereerde pagina door een simpele parser te halen en dan op het laatste nog even dat soort kleine dingen aanpassen.

edit:
Het liefst zet ik in msgboard.php iets als cacheble=false. Maar omdat er voor msgboard.php ook maar wordt aangesproken, de cache al afgehandeld wordt, gaat dit niet werken