Caching van pagina's voor ingelogde gebruikers

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • marko77
  • Registratie: Februari 2002
  • Laatst online: 06-05 19:41
Ik ben momenteel bezig met een inventarisatie van mogelijkheden die er onder Linux zijn om caching voor websites te realiseren. Op zich ken ik wel een aantal goed pakketten hiervoor, echter nu is het soms ook noodzakelijk om content te cachen voor b.v. een ingelogde gebruiker, of een dynamische winkelwagen o.i.d.

Nu heb ik al een tijdje gegoogled en ik vind een hoop oplossingen, maar geen enkele die eigenlijk als 'meest gebruikt' naar boven komt. Enkele voorbeelden die ik gevonden heb:

-met ajax delen van de pagina updaten, de rest van de pagina is cached
-varnish met ESI ( http://www.varnish-cache....ampleCachingLoggedInUsers )
-cachen met pakket X en content voor logged in users NIET cachen (geen optie in mijn geval)

In welke richting kan ik mijn onderzoek het best voortzetten? De soort oplossing die Varnish biedt (deels statisch, met dynamische onderdelen o.b.v. parameters) spreekt mij op zich aan, maar wellicht is het te complex en niet werkbaar.
Ik wil namelijk voorkomen dat ik het wiel opnieuw moet uitvinden, vandaar dat ik hier eens pols wat een best practice zou zijn in dit geval.

Mijn rig


Acties:
  • 0 Henk 'm!

  • Sypher
  • Registratie: Oktober 2002
  • Laatst online: 17:51
Varnish is een mooie applicatie die hier prima geschikt voor is.

Ik heb het zelf ook in productie draaien en bevalt prima.
Ik cache er echter (nog) geen dynamische content mee, maar enkel static content of content waarvan expliciet de "cache mij" tag is gezet.
Al zou dat ook best kunnen. Je kan met hun VCL configstructuur alle kanten op.

Aan de hand van een cookie entry zou je kunnen zien of de user ingelogged is of niet.
Voor gasten kan je dan "stale content" gaan aanbieden.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

De ESI/SSI oplossing werkt prima maar is natuurlijk geen eenvoudige drop-in oplosing. Het is een oplossing die alleen effect heeft op zware pagina's waarbij het zware gedeelte voor iedere gebruiker hetzelfde is.

Ik gebruik zelf een vergelijkbare oplossing maar dan met Nginx in combinatie met Memcached zodat de cache invalidatie ook direct vanuit de applicatie en/of database triggers geregeld kan worden.

Een andere oplossing voor je is misschien volledige blokken met standaard content cachen. Bij de meeste webshops heb je blokken die zich over de hele website herhalen en dus eigenlijk maar 1x gerenderd hoeven te worden. Zoiets is meestal ook een stuk eenvoudiger te realiseren.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • marko77
  • Registratie: Februari 2002
  • Laatst online: 06-05 19:41
Standaard blokken cachen en bepaalde elementen dynamisch generen is idd wat ik zoek, alleen wélke oplossing ik daarvoor moet gebruiken is even de vraag in dit geval.

Mijn rig


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Je probleembeschrijving is niet helemaal duidelijk. Het gaat dus om server-side caching? Hoe wordt de content gegenereerd?

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

marko77 schreef op dinsdag 16 november 2010 @ 13:33:
Standaard blokken cachen en bepaalde elementen dynamisch generen is idd wat ik zoek, alleen wélke oplossing ik daarvoor moet gebruiken is even de vraag in dit geval.
Hangt er natuurlijk vanaf hoe je op dit moment je systeem in elkaar hebt zitten.

Met een memcached servertje kan je in ieder geval een heel eind komen. Gewoon de zware blokken op de pagina voor zover mogelijk via memcached laden.

Blog [Stackoverflow] [LinkedIn]


  • marko77
  • Registratie: Februari 2002
  • Laatst online: 06-05 19:41
Voorzover ik even snel kan zien dien ik dan memcached uit mijn code aan te spreken, door de API van memcached aan te roepen.
Dat lijkt mij ietwat bewerkelijk. Een oplossing waarbij ik op de gegenereerde pagina bepaalde 'dynamische' blokken kan aangeven, die dan worden ingeladen, wat Varnish met ESI volgens mij doet, is denk ik eenvoudiger te implementeren.

Mijn rig


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Zoals ik zeg, het hangt van je site af :)
Dat kan inderdaad een stuk eenvoudiger zijn voor je.

Let er trouwens op dat ESI/SSI systemen door nagenoeg elke webserver ondersteund worden dus Varnish is daarvoor geen verplichting. Varnish is bloedsnel en geweldig in cachen, maar mist bijvoorbeeld ingebouwde ondersteuning voor dingen als gzip en ssl. Varnish is vooral gemaakt om licht en eenvoudig te zijn en bevat dus weinig features.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • marko77
  • Registratie: Februari 2002
  • Laatst online: 06-05 19:41
Dat ssl niet ondersteund wordt wist ik al, is geen probleem. Alle SSL pagina's die ik op deze site heb zijn niet gebaat bij caching. Ik ga aan de bak met ESI en varnish, eens kijken hoe ver ik kom.

Mijn rig

Pagina: 1