FAQ |
Kalender |
|
Ämnesverktyg | Visningsalternativ |
|
![]() |
#1 | |||
|
||||
Har WN som tidsfördriv
|
Citat:
Varnish är extremt bra för att avlasta PHP och genereringen av html för de allra flesta sidor. Just det är i min värld den främsta anledningen till att man har en cachande reverse proxy framför webbservrarna. Så du kan, enligt mig, inte ha mer fel där... Jag sätter mer eller mindre alltid Varnish på att cacha även genererad HTML. Det gör väldigt mycket mer för prestandan än vad både memcached och opcode cache gör för de flesta typer av sidor. Ju tidigare man cachar desto bättre både för responstid och för skalning. Hur sidor ska cachas kan man styra hyfsat bra med HTTP headers (Expires, Last-modified, no-cache etc). Även om webbhotell har en "dum" varnish cache framför som bara cachar i 5 min så gör det ju ändå enorm skillnad för backenden för en vältrafikerad sida om man bara behöver generera samma sida en gång var 5:e minut jämfört med att generera varje request. Alla sidor och all typ av innehåll lämpar sig givetvis inte för att cachas av varnish men jag skulle nog säga att minst 90% av sidor är lämpliga att cacha i varnish i minuter eller mer. Det är få typer av sidor som behöver realtidsuppdateringar. För en blogg med många och frekventa kommentarer är det väl kanske gränsfall, men att det tar 5 minuter för kommentarerna att synas är ju inte någon katastrof. Just kommentarer kan man ju även ladda in asynkront utan större problem, exempelvis med Disqus. |
|||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Klarade millennium-buggen
|
Lätt och slänga ur sig att någon har fel, utan att exakt förklara vad som är fel, vilket jag inte tycker du har gjort. Jag sa inte att man inte kan använda varnish för att avlasta php, sa bara att man inte speciellt ofta gör det, och inte gör det på ett effektivt sätt. Kan man inte anpassa vcl filen på ett bra sätt får du aldrig riktigt till det bra. Du säger ju själv "Alla sidor och all typ av innehåll lämpar sig givetvis inte för att cachas av varnish" Standard config på varnish cachar inte .php filer, det var ju därför jag sa: "Man sätter sällan varnish att cacha php filer, men det går att döpa om php exekverarade filer till .html filer och på så sätt få varnish att på ett enkelt sätt att cacha innehållet." Vad är det jag har sagt som är fel?
Senast redigerad av Danielos den 2013-10-15 klockan 23:28 |
|||
![]() |
![]() |
![]() |
#3 | ||||
|
|||||
Har WN som tidsfördriv
|
Citat:
Citat:
Citat:
Citat:
Sedan har jag har nog aldrig hört om någon som döpt om filändelsen på php-filer för att få de att cachas i Varnish... Jag tycker det mesta som du skrivit här angående Varnish varit mer eller mindre fel. Det bästa är ju som sagt att cacha datan så tidigt som möjligt i serverstacken. Ju djupare ned i din miljö du måste för att hämta datan ju längre tid tar det och ju dyrare är det att serva requesten. Det dyraste är att läsa in data som ligger på disk, i synnerhet ifrån databaser. Kan du istället serva hela HTML-dokumentet direkt ifrån RAM-minnet genererat och klart så går det ju väldigt mycket fortare och kräver endast en bråkdel av serverresurserna. Om du exempelvis kan serva 50% av dina HTML-dokument direkt i från cachen i Varnish så har du halverat antalet requests som når dina webbservrar och därmed i princip halverat din serverlast. På vältrafikerade sajter brukar man kunna få över 95% cache hits i Varnish vilket gör att det är är mindre än 5% av alla request som ens tar sig ned till webbservrarna. Vad det innebär för belastningen på både webbservrar och databasservrar är det ju inte så svårt att räkna ut. Varnishservrarna är extremt effektiva och kan i de flesta serva tusentals requests per sekund med minimal hårdvara. Inget av det här kommer du i närheten av om du bara använder applikationscache(t.ex. Memcached) och opcode(t.ex. APC eller xCache) även om du såklart gärna kan kombinera och köra allt för att få en ännu effektivare miljö. |
||||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Klarade millennium-buggen
|
Citat:
|
|||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Har WN som tidsfördriv
|
Citat:
Webbhotellen använder väl knappast standardconfig? Jag har dock inte koll på exakt hur de är konfigurerade. Så visst, du har en poäng där, men läste du verkligen resten av inlägget? Du kan som sagt styra en del genom att skicka rätt HTTP-headers och det är numera relativt få sidor som faktiskt visar ".php" i URL:en med tanke på att i princip alla ramverk och CMS:er som finns har stöd för att enkelt få till "pretty URLs" med rewrites. När du säger att Varnish "inte påverkar så mycket" kunde du inte ha mer fel. Det är min bestämda åsikt. |
|||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Klarade millennium-buggen
|
Då missförstod du mig, varnish kan visst avlasta och snabba upp, det är ju därför vi själva erbjuder varnish, men eftersom du inte kan cacha allt dynamiskt php innehåll så påverkar memcached och tex. xcache mer i de fallen.
|
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Administratör
|
Citat:
Vidare finns det inget i den som säger att den cachar "statiskt" innehåll bättre än något annat. Det beror på vad webbservern skickar för headers för statiskt innehåll. Det kan du dock styra själv både för statiska (.htaccess) och dynamiska filer (egna headers) på de flesta webbhotell. Det enda stora problemet med varnish med delad generisk config blir att du inte kan hantera cookies som backend behöver på ett bra sätt. Sen vet jag inte om du har rätt i att webbhotellen sätter varnish till att explicit inte cacha .php requests. Det vore isåfall ofantligt dumt. Att tillåta användaren att kontrollera det med cache headers det vore det ända acceptabla. Vidare finns det inget (opcode cache, query cache, key-value stores, snabb webbserver osv) som kan göra så mycket för prestandan som en bra setup med varnish (eller motsvarande mjukvara!) även om man har en delad vcl - som inte är klantigt uppsatt.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
Svara |
|
|