Jekyll men ingen mister Hyde

2015-05-12   John Allberg   Web

När vi startade Ayoy ville vi snabbt ha upp en enkel webb. Vi tog hjälp att utforma webben och det slutade med en Wordpress i Azure. Wordpress har dock känts mindre och mindre rätt säkerhetsmässigt samtidigt som prestandan har varit usel. Vi har nu gjort om vår webb från grunden och baserar oss nu på Jekyll, en av generatorerna av statisk html.

Tidigare i år klickade en av våra kunder i snabb följd på flaggan för att byta språk mellan engelska och svenska. Wordpress skapade då för många kopplingar till databasen och därmed lämnade Wordpress HTTP 500 - internt fel.

Nu använder vi istället Jekyll för att generera statisk HTML och vi har inte längre några problem med prestandan. Svarstiderna ligger på ~100 ms, en förbättring med 94%…

I Wordpress ligger PHP-sidorna på webbservern som ska köras och sedan ska data läsas från databasen. Med Jekyll är det bara råa HTML-filer som ligger på webbservern, då ingenting behöver exekveras blir det naturligtvi betydligt snabbare.

(Nu ska det också sägas att Microsoft den 30 april gjorde en stor förändring som förbättrade prestandan för vår Wordpress-sida till ~100 ms genom aggressiv cachning i infrastrukturen framför. Däremot förstörde det fullständigt vårt språkstöd i Wordpress så det kändes skönt att ha den nya webbsidan i bakfickan att snabbt kunna slänga upp för våra tusentals trogna läsare (hrmmm, nåja).)

Vi använder Grunt för att köra både Jekyll och övriga förbättringar (minifiering av html, javascript, css och bilder). Det gör vi idag på våra respektive maskiner och checkar in resultatet till Github. Azure läser sedan direkt ifrån Github.

Vi lade ner en hel del arbete på att kunna bygga websiten i Azure men kom inte hela vägen innan vi var tvungna att sätta den i produktion. Det är lätt att konstatera att Grunt, Jekyll och dess tillhörande pluginer inte är särskilt vältestade på Windows, vilket ger problem när man ska köra dem på Azure.

Internationalisering

Vår webb är på två språk, engelska och svenska. I Jekyll använder vi därför jekyll-multiple-languages-plugin för att i praktiken bygga två olika webbplatser, en för engelska och en för svenska.

I Wordpress använde vi oss av språket som webbläsaren begär för att välja vilket språk som skulle visas för besökaren. Det går så klart inte att använda rakt av när man bara har statisk HTML, men en regel i web.config för URL Rewrite löste det:

<rule name="RedirectToLocal" enabled="true" stopProcessing="true">
  <match url="^$" />
  <action type="Redirect" url="/en/" appendQueryString="true" />
  <conditions>
    <add input="{HTTP_ACCEPT_LANGUAGE}" pattern="sv" negate="true" />
    <add input="{HTTP_REFERER}" pattern="www.ayoy.se" negate="true"/>
  </conditions>
</rule>

Om en användare surfar in på vår webbsida och inte har “sv” i någon av sina godkända språk och dessutom inte kommer från www.ayoy.se så skickas användaren vidare till “/en” som är den engelska sidan.

Vad händer nu?

Vi kommer att fortsätta förbättra innehållet på webben men också arbeta vidare på att bygga den dynamiskt i Azure. Det i sin tur kräver att vi felanmäler de delar av Grunt och Jekyll med tillhörande pluginer som inte fungerar på Windows.

Kanske vi återkommer med en bloggpost om det?


Nästa inlägg ("Lärdomar av inkomstdeklarationen 2015") >>
<< Tidigare inlägg ("Bankerna nu försiktigt positiva till Svensk e-legitimation")
Share This:    
John Allberg

John har arbetat med elektronisk identifiering och e-legitimationer sedan 2000. Först på Posten eSäkerhet mellan 2000 och 2004, sedan på Telia mellan 2004 och 2008. Från 2009 är han konsult inom området och 2010 grundade han Ayoy tillsammans med Oscar Jacobsson.