Speed

A fast site, with nothing to tune.

The cache fills and empties itself, images arrive at the right size, stylesheets are compacted on release. You edit a page: the new version is served on the very next click, and there is nothing to purge by hand.

A cache that runs itself

Assembling a page — its sections, rows, blocks and their styles — is the costly part of rendering. So JEIKO keeps the result in memory, and only recomputes it when it has changed.

  1. Every page carries a version number. Any saved change — in the editor, through the API or by an agent — increments it: the old copy can no longer be found, and the next one is built on the first visit.
  2. Lists follow their records. A grid of products or records updates as soon as a product is added, edited or removed — without touching the page that displays it.
  3. What must not be frozen isn't. A page holding a form or a booking calendar is computed on every visit: the form's security token and the free slots must be those of the moment.
  4. The site's identity and menus — logo, colours, fonts, navigation — are cached the same way, and purged as soon as you change them.
  5. Neighbours are left alone. Several sites can share a server: clearing one site's cache doesn't clear the others'.

The « Clear cache » button is still in the settings, for peace of mind. It is never needed after an edit.

Images at the right size

An image uploaded to the media library is produced in five widths on upload. The browser picks the one that suits its screen: a phone doesn't download the image meant for a large monitor.

767 px phone
991 px tablet
1200 px laptop
1500 px desktop
1920 px large screen

<img srcset="…-767.webp 767w, …-991.webp 991w, …"
sizes="(max-width: …) 100vw, …">

  1. Images placed inside a text block also get their variants at render time, without the saved content changing: replacing the image in the media library is enough to update everything.
  2. The image of a hero banner is requested first; the others in turn.

Compact files, kept for a year

Stylesheets and scripts are minified at deployment, not by hand: there is only one source, so no compact copy that could drift from the original.

  1. Each file carries its fingerprint in its name. The browser can keep it for a year without asking again: the day it changes, its name changes with it.
  2. Non-critical stylesheets load after first paint: the page appears first, the styles for the mobile menu or the cookie banner follow.
  3. Fonts are hosted on the site, with no call to a third-party service, and text is shown without waiting for them.
  4. Each block only receives its own styles, with no giant stylesheet to download for the whole site.

Measured, page by page

JEIKO queries PageSpeed, Google's measuring tool, and keeps each page's history: mobile and desktop scores, Core Web Vitals from real visitors and from the lab, failed audits. Every day, pages whose last measurement is more than a week old are measured again, twenty per run, oldest first.

Reading a page's measurements through the API

GET /api/agent/v1/pages/12/mesures/?appareil=mobile

{ "page": 12,
"mesure": {
"appareil": "mobile",
"mesure_obsolete": false,
"scores": { "performance": 97, "accessibilite": 100,
"bonnes_pratiques": 100, "seo": 100 },
"web_vitals_visiteurs": { "lcp_ms": …, "inp_ms": …, "cls": … },
"web_vitals_laboratoire": { "lcp_ms": …, "fcp_ms": …, … },
"audits_rates": { "accessibilite": [], "seo": [] },
"a_corriger_en_priorite": []
} }

« mesure_obsolete » flags a measurement taken on a different address from the page's current one — after a change of category, for instance.

The technical stackSecurity