Als je (bijv.!) kijkt op
http://memcached.org/ zie je:
code:
1
2
3
4
5
6
7
8
| function get_foo(foo_id)
foo = memcached_get("foo:" . foo_id)
return foo if defined foo
foo = fetch_foo_from_database(foo_id)
memcached_set("foo:" . foo_id, foo)
return foo
end |
Dit is (pseudo) code die, in dit geval, memcached gebruikt om cached zaken op te halen; als je door hebt hoe zoiets werkt (en bovenstaande pseudo-code zou je daarbij moeten helpen) is caching niet eens heel moeilijk. Natuurlijk is het niet zo simpel als dit; je zult bijvoorbeeld te maken krijgen met
cache-invalidatie (wanneer iemand een "foo" wijzigt bijvoorbeeld en je dus de cached versie ervan wil verwijderen om zo te zorgen dat de volgende keer als iemand de betreffende "foo" ophaalt ook de laatste gegevens krijgt),
Cache coherency kan belangrijk zijn bij meerdere caches en zo nog veel meer zaken; ook zul je je per "ding" moeten afvragen of je alleen het object wil cachen of ook (een deel van) de gegenereerde HTML of misschien wel iets heel anders etc. etc. En dan heb je nog keuze uit Disk caches, memory caches, DB caches en
whathaveyou en ga zo maar door.
Het is al vaker gezegd; maar het is niet zo simpel als (ik denk dat) je gehoopt had
Let wel; ik haal hier nu "zo even" memcached er bij, maar er zijn 1.001 andere mogelijkheden.
[Voor 12% gewijzigd door RobIII op 26-05-2011 21:19]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Roses are red Violets are blue, Unexpected ‘{‘ on line 32.
Over mij