A.Translator schreef:...Sommigen hebben de cache kennelijk helemaal uitgeschakeld, maar ik neem aan dat het ding er niet voor niets zit.
Kan iemand me uitleggen wat de voor- en nadelen van het uitschakelen van de cache zijn? (Ik had juist altijd begrepen dat een cache er voor zorgde dat een pagina of wat dan ook juist sneller weer opgebowud kon worden)...
Je uitgangspunt is correct, maar het ligt veel genuanceerder. Ik zal proberen het uit te leggen in lekentermen. Een cache is in beginsel bedoeld om gegevens sneller toegankelijk/paraat te maken. Grofweg zijn de 2 meest gebruikte toepassingen:
1. Parate en veelgebruikte data (tijdelijk) opslaan op een lokatie die sneller toegankelijk is en/of sneller data kan verwerken. Typisch voorbeeld zijn caches die worden gebruikt op processoren en moederborden (Cachen in geheugen is meestal sneller dan cachen op een harddrive).
2. Voorkomen dat data meerdere malen dezelfde (trage) verwerking (= processing) moet ondergaan. Dit voorkomen je door de processing slechts 1 keer uit te voeren en het resultaat op te slaan en te gebruiken, in plaats van het steeds opnieuw uitvoeren van die processing. Typisch voorbeeld hiervan zijn thumbnail caches; Als je foto's op je systeem zet, zal deze thumbnails genereren om de foto's weer te geven en deze opslaan. Na die eerste actie worden voortaan de gegenereerde thumbnails getoond, ze worden niet steeds opnieuw gegenereerd. Pas zodra het bronbestand wijzigt wordt weer een nieuwe thumbnail gegenereerd (als de caching tenminste goed werkt).
De implementatie van een cache is zeer complex, je moet nl, met allerlei factoren rekening houden (is data ondertussen veranderd, timing issues etc.). Als je bijvoorbeeld de foto cropt, wil je vervolgens wel dat de thumbnail van de foto ook opnieuw wordt gegenereerd. Wat veel mensen echter niet beseffen is dat het vullen van een cache niet 'gratis' is, dat kost tijd. De vraag is ook of de cache efficient wordt opgebouwd en gebruikt (bij sommige applicaties is dat absoluut niet het geval door ontwerpfouten of bugs).
Een (overgesimplificeerd) voorbeeld: Je opent een foto in programma X, wat de data in het fotobestand uitleest en omzet naar iets wat je computer op je beeldscherm weer kan geven. Er is geen cache. Op systeem A (traag) duurt dit elke keer 6 seconden, op systeem B (snel) duurt dit elke keer 1 seconde.
Stel nu je doet die verwerking slechts eenmaal en je 'cached' het resultaat. Beide systemen kunnen dan als je het bestand volgende keren opent de foto in 1 seconde weergeven. Echter, het cachen zelf (niet het omzetten), of het controleren of een bestand al eerder is gecached, kost ook tijd. Laten we zeggen 1 seconde. Het effect dat je dan krijgt is als volgt:
Scenario: Openen van foto zonder caching:
Systeem A:
Elke keer 6 seconden
Systeem B:
Elke keer 1 seconde
Scenario: Openen van foto met caching:
Systeem A, 1e keer openen: 6 seconden (verwerken) + 1 seconde (caching) =
7 seconden
Systeem A, opvolgende keren openen: 1 seconden (verwerken uit cache) + 1 seconde (caching) =
2 seconden
Systeem B, 1e keer openen: 1 seconden (verwerken) + 1 seconde (caching) =
2 seconden
Systeem B, opvolgende keren openen: 1 seconden (verwerken uit cache) + 1 seconde (caching) =
2 seconden
Conclusie: Systeem A heeft duidelijk winst bij caching, maar pas nadat de foto meer dan eens wordt geopend. Systeem B is echter trager met caching; De verwerking is net zo snel uit de cache als 'direct' uit het bestand, dus je wint niets, maar je verlist tijd omdat het elke keer tijd kost om de cache te vullen of controleren. Computer B heeft dus geen baat bij de cache, sterker nog, deze wordt erdoor gehinderd.
De moraal van dit verhaal: Vaak biedt caching voordelen en snelheidswinst, maar het kan ook tegen je werken, soms zelfs met drastisch verlies van performance. Dit komt nog het meest voor bij (verouderde) applicaties die op moderne, snelle hardware draaien. Maar het hangt af van je PC, applicatie en andere factoren. Oftewel, je moet
per geval bekijken of het in- of uitschakelen van de cache voor- of nadelen biedt.
PS: In mijn concrete geval betekende het volledig uitschakelen van de cache in NX2 dat bestanden veel sneller worden geopend en opgeslagen,
zonder enige (merkbare) bijwerkingen of nadelen.