From 526e7ce62244567d71b2dfa0615574e4347c3f22 Mon Sep 17 00:00:00 2001 From: Cosmo Date: Thu, 16 Jul 2026 10:13:18 +0000 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=BC=D0=BE=D0=BD=D1=82:=20cache-b?= =?UTF-8?q?usting=20=D0=B4=D0=BB=D1=8F=20CSS/JS=20(=3Fv=3D=D1=85=D1=8D?= =?UTF-8?q?=D1=88)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ссылки на style.css/app.js получают ?v=. При изменении стилей/скриптов URL меняется → браузер подтягивает свежую версию сразу, не дожидаясь истечения 7-дневного кэша (была видна старая CSS после правок). Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01KjyzuPoH9T5k3oCbKEEazy --- Ремонт квартира/.site/generate.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Ремонт квартира/.site/generate.js b/Ремонт квартира/.site/generate.js index 689103e..782209d 100644 --- a/Ремонт квартира/.site/generate.js +++ b/Ремонт квартира/.site/generate.js @@ -25,6 +25,7 @@ */ const fs = require('fs'); const path = require('path'); +const crypto = require('crypto'); const sharp = require('sharp'); const HERE = __dirname; @@ -34,6 +35,14 @@ const OUT = process.env.OUT || path.join(HERE, 'out'); const OUT_IMG = path.join(OUT, 'images'); const cfg = JSON.parse(fs.readFileSync(path.join(HERE, 'site.config.json'), 'utf8')); +// хэш содержимого ассета → ?v=… чтобы браузер сбрасывал кэш при изменении CSS/JS +function assetVer(rel) { + const buf = fs.readFileSync(path.join(HERE, 'assets', rel)); + return crypto.createHash('md5').update(buf).digest('hex').slice(0, 8); +} +const CSS_VER = assetVer('style.css'); +const JS_VER = assetVer('app.js'); + // ─── утилиты ────────────────────────────────────────────── const esc = (s) => String(s == null ? '' : s) .replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); @@ -420,7 +429,7 @@ function buildHtml(rooms, sections) { - + @@ -476,7 +485,7 @@ ${sectionsHtml} - + `; }