fre, 07/03/2014 - 12:38
Hos Magentohotel benyttes et cluster af nginx-loadbalancere, både for at shape trafikken, men også for at hæve hastigheden på kundernes sites ved at cache statiske elementer.
Beslutter man sig for at udvikle/ændre på websites i produktion kan man opleve problemer med, at rettelser ikke slår igennem på sitet. Et eksempel på et statisk element kunne være en .css fil.
Lad os starte med at se på en header for styles.css:
HTTP/1.1 200 OK Server: nginx Date: Fri, 07 Mar 2014 11:22:08 GMT Content-Type: text/css Content-Length: 17939 Connection: keep-alive Last-Modified: Thu, 05 Jul 2012 10:49:57 GMT ETag: "175e8" Cache-Control: max-age=604800 Expires: Fri, 14 Mar 2014 11:22:08 GMT Vary: Accept-Encoding,User-Agent Content-Encoding: gzip X-Served-By: Apache, PHHW-121001: prod12.magentohotel.dk, 130.185.133.138, vhost = demo X-PH-Static-Cache: HIT Accept-Ranges: bytes
Ovenstående header giver en række informationer, men i denne sammenhæng er X-PH-Static-Cache den vigtigste. Den fortæller, at det pågældende element er cached(HIT) af loadbalanceren. Skulle man efterfølgende have lavet en ændring i .css-filen vil denne ikke kunne ses da versionen på loadbalanceren da er ældre end den nye fil.
Heldigvis er det let at tvinge loadbalanceren til at opdatere filen i cachen. Det gøres ved, at inkludere pragma: no-cache i get-kommandoen man sender via sin browser. Alt efter hvilket mix operativ system og browser man benytter findes der forskellige kommandoer for at lave en såkaldt force-refresh. Herunder findes en liste over de forskellige browsere:
Windows +
- - Internet Explorer (ctrl + F5)
- - Firefox (ctrl + F5)
OS X +
- - Firefox (cmd+shift+r)