34 lines
7.0 KiB
Markdown
34 lines
7.0 KiB
Markdown
# П57 · 2022-11 · Производительность Bitrix-страницы — три прохода саморевью
|
||
|
||
## Рамка пакета
|
||
|
||
- Slug: `editorial-2022-11-practice-bitrix-performance`, `editorial-2022-11-mechanism-bitrix-performance`, `editorial-2022-11-field-bitrix-performance`.
|
||
- Голос: М5, ноябрь 2022 года. Краткая прагматичная техническая речь: симптом → причина → проверка → действие. Автор уже системно разделяет границы, но не объявляет production-результат без артефакта.
|
||
- Граница: package не запускает Bitrix, PHP, HTTP, SQL, файловый кеш, шаблон, браузер, profiler, часы или метрики. `declared-cache-reuse` и `declared-cache-build` — только ветки локальной модели, не cache hit/miss.
|
||
- Sidecar содержит ровно пять новых файлов. Registry, README, `articles.json`, очередь, документация, Git, другие месяцы и чужие файлы не менялись.
|
||
|
||
## Проход 1 — факты и техника
|
||
|
||
- Проверены три первичных исторических источника Bitrix с точными immutable Wayback URL и ответом `HTTP/2 200`: [StartResultCache, snapshot 27.09.2022](https://web.archive.org/web/20220927080127id_/https://dev.1c-bitrix.ru/api_help/main/reference/cbitrixcomponent/startresultcache.php), [SetResultCacheKeys, snapshot 15.08.2022](https://web.archive.org/web/20220815073221id_/https://dev.1c-bitrix.ru/api_help/main/reference/cbitrixcomponent/setresultcachekeys.php), [курс о кешировании, snapshot 29.06.2022](https://web.archive.org/web/20220629225339id_/https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=3485). Все снимки доступны до ноября 2022; текущие плавающие страницы не используются как историческое доказательство.
|
||
- Документы применены строго в своей области: `StartResultCache` — для возвращаемых веток и базовых частей зависимости; `SetResultCacheKeys` — для того, какие части `$arResult` сохраняются; курс — для различения типов кеширования. Ни один источник не назван профилем страницы, SQL trace, cache hit-rate или измерением ответа.
|
||
- Независимая правка редактора: первоначально rollback строился от исходного объекта, поэтому формально возвращал прежний template, не пройдя через учебно изменённую версию. Теперь `applyTeachingChange` сохраняет отдельную неизменяемую changed model, а rollback начинается именно от неё; fixture проверяет и смену template, и его возврат.
|
||
- `runBitrixPerformanceFixture()` имеет тринадцать assertions о локальных объектах: нет runtime/SQL/duration/profiler, полный и неполный key contract различаются, неполный contract блокирует изменение, план создаёт отдельную версию с rollback, rollback возвращает template. Нет assertion о реальном Bitrix, пользователе, HTTP, HTML, миллисекундах или эффекте оптимизации.
|
||
|
||
## Проход 2 — голос, полнота и объём
|
||
|
||
- Первые два абзаца каждой статьи называют ошибку и цену: слово «Bitrix» скрывает границу, а слепая очистка кеша, переписывание шаблона или изменение ресурсов увеличивают риск без доказательства причины.
|
||
- Каждая статья содержит таблицу, исполнимый code/example, нумерованный маршрут, одну содержательную figure с alt/caption, ограничения, rollback и следующий шаг. Полевой материал не маскирует типичный случай под реальный кейс.
|
||
- Основной текст без списка источников: 8 100 / 9 205 / 8 836 знаков. Внутренний builder и `audit:draft` подтверждают диапазон 5 000–15 000 и минимум 8 минут чтения.
|
||
|
||
## Проход 3 — визуал, безопасность и выпуск
|
||
|
||
- Три SVG разделяют вопросы: request/component/cache/template evidence contract, полнота cache key и маршрут diagnosis/rollback. На ширине 375 px проверены Sharp-рендеры; заголовки и последовательность различимы, мелкий технический текст не несёт единственного смысла.
|
||
- После независимой правки повторно пройдены: `node --check web/scripts/upgrade-2022-11.mjs`; `node web/scripts/upgrade-2022-11.mjs --verify-fixture` — PASS 13/13; `cd web && npm run audit:draft -- scripts/upgrade-2022-11.mjs` — PASS; прямой import-safe экспорт без `date`/`author`; `xmllint --noout`; safety scan без `script`, `foreignObject`, external/data href и inline handlers; Sharp-review всех SVG на 375 px.
|
||
- При приёмке пакет добавлен в registry поверх исходных slug; `articles.json`, даты и автор не менялись. README обновлён с 172 до 175 принятых материалов из 358. Чужие sidecar-файлы не затрагивались.
|
||
|
||
## Интеграционная приёмка
|
||
|
||
- Строгий аудит опубликованного overlay прошёл для всех трёх slug: 8 108 / 9 205 / 8 864 знака, по одной figure, table и code example. Отдельная merge-проверка подтверждает исходные даты и автора `DarkRiDDeR`; в registry 166 ревизий.
|
||
- `npm run build` в `web/` завершился успешно: production-сборка сгенерировала 374 статические страницы. Предупреждения относятся только к неподдерживаемым локальным npm-конфигурациям; TypeScript и Next.js завершились без ошибки.
|
||
- Перед commit остаются `git diff --check`, проверка точного staged-набора и отношение к `origin/master`; reset и перезапись архива не применялись.
|