Приёмка фронтенда в 2026 году на удалённом Mac:
Service Worker, кэш Safari, серая канарейка и откат — таблицы и три шага
2026-service-worker-safari-release-checklist-remote-mac.htmlДля кого: команды с service worker и хэшированными ассетами. Только Chromium в CI скрывает тайминги WebKit и партиционирование кэша. Ниже — таблица Safari и Chromium, матрица канарейки и отката, исполняемые правила для skipWaiting и clients.claim, контракт префиксов кэша и RELEASE_ID, три шага перед продом и сценарий на удалённом Mac. Внутренние ссылки (живые URL в каталоге articles/): проверка деплоя Vite и Webpack в Safari, HTTP и QUIC в двух движках, Web Inspector и отладка. Правило CTA: технические блоки ведут в смежные статьи; финальный блок — на тарифы, помощь и аренду или покупку без обязательного входа.
01 Таблица различий Safari/WebKit и Chromium
Три боли релиза: (1) маркетинг видит новый билд, а клиенты остаются на старом контроллере; (2) после инвалидации CDN Safari кажется «липким» из‑за связки HTTP-кэша и Cache Storage; (3) канареечный процент включили без строки отката в runbook.
| Тема | Safari / WebKit | Chromium |
|---|---|---|
| install → waiting | Проверки на холодном старте ощущаются медленнее; между прогонами используйте панель воркера и Develop → Empty Caches. | DevTools показывает состояния наглядно; Update on reload только локально, не как допущение для прода. |
| Cache Storage | Квоты и вытеснение отличаются; длинный precache может тихо отклонять промисы в install. |
Метрики предсказуемее; следите за размером opaque ответов с других origin. |
| Navigation preload | Поддержка и дефолты менялись между релизами — детектируйте фичу и логируйте булево при activate. |
Широко доступно; злоупотребление скрывает регрессии бэкенда по времени ответа. |
| Сторонний контекст | ITP и партиции усложняют вход через iframe; отдельные приёмочные сценарии для OAuth. | Партиционирование тоже ужесточено — не рассчитывайте на общий ключ кэша между сайтами. |
| Мгновенная активация | Пользователи реже ожидают резкую смену ассетов; сочетайте автоактивацию с баннером версии. | Тот же UX-риск; добавьте телеметрию на controllerchange. |
Согласуйте политику скриптов с материалом CSP и nonce в Safari.
Серая канарейка и откат
| Сценарий | Канарейка | Откат |
|---|---|---|
| Плохой precache | Новый воркер с увеличенным STATIC_PREFIX и укороченным списком маршрутов; старые кэши только чтение до TTL. |
Верните предыдущий артефакт sw.js, восстановите прежний префикс, при необходимости удалите плохой префикс в activate. |
| Яд runtime-кэша | Имена вида api-v12-runtime и фичефлаги на сервере. |
Выключите версию API, удалите пространство имён в activate, попросите клиентов о мягком обновлении. |
| Шок активации | Отключите автоматический skipWaiting; тост при registration.waiting. |
Горячий фикс с skipWaiting только по согласованию, затем возврат политики в следующем деплое. |
02 Проверки перед релизом
Префиксы кэша: закодируйте APP_SLUG, RELEASE_ID (SHA или semver) и канал, например acme-7f3c1b9-static и acme-7f3c1b9-runtime. После отката не переиспользуйте префикс: поднимите RELEASE_ID даже при совпадении файлов, чтобы телеметрия не лгала.
skipWaiting: вызывайте в install только если допустима мгновенная смена оболочки. Для кабинетов SaaS вызывайте из обработчика сообщения после явного согласия пользователя.
clients.claim: в activate только если новый воркер должен обслуживать уже открытые вкладки, например после патча безопасности. Избегайте при длинных формах и загрузке медиа без полного перезагрузочного цикла.
Три шага перед выкладкой
- Зафиксируйте контракт воркера: scope, лимит байт precache, список маршрутов без кэша.
- Двойная установка в CI: юнит-тесты хэндлеров плюс один прогон Playwright WebKit и один Chromium с проверкой баннера
RELEASE_ID. - Репетиция отката: намеренно сломайте воркер на staging, выполните строку отката из таблицы и засеките время восстановления.
Артефакты трассировки оформляйте по гайду Playwright trace и HAR; кэш сборки см. Rspack, esbuild и воркеры.
Цифры в отчёт: максимум пять мегабайт на precache как ориентир контроля; не более трёх одновременных префиксов static на канал; целевое время восстановления после отката меньше десяти минут при известном purge CDN.
03 Процедура проверки на удалённом реальном Mac
- Забронируйте Apple Silicon. Подключитесь к удалённому Mac, сверьте патч ОС с продом, откройте Safari и Chrome или Edge в одной пользовательской сессии.
- Сбросьте поверхности честно. Закройте вкладки origin, очистите кэши Safari, site data в Chromium, дважды загрузите канареечный URL.
- Прогоните waiting. Выкатите второй билд, убедитесь в состоянии
waiting, примените боевую политику активации, сравните хэши файлов в сетевой панели. - Офлайн и флейки. Кратко отключите сеть или включите офлайн в инструментах и проверьте fallback на активном префиксе.
- Упакуйте доказательства. Скриншоты, URL скрипта воркера, идентификатор purge и ссылка на тикет — одна запись в журнале релиза.
Часы удалённого Mac дешевле аварийного отката в окне маркетингового анонса.
04 FAQ
Когда вызывать skipWaiting автоматически?
Для статических витрин и внутренних стендов. Для авторизованных сценариев лучше явное обновление после уведомления, чтобы не смешивать старый HTML с новым воркером.
Обязателен ли clients.claim после activate?
Только если нужен немедленный контроль уже открытых вкладок. Иначе дождитесь полной навигации и снизьте сюрпризы в Safari.
Почему Safari отстаёт от Chromium?
WebKit по-другому складывает сетевой кэш, Cache Storage и расписание проверок SW. Сравнивайте одинаковый билд после очистки и логируйте ключи CDN.
Решит ли unregister инцидент?
Помогает на учениях, но бросает офлайн-пользователей. Предпочитайте версионированные префиксы и точечный caches.delete.
05 Конверсия
Закажите удалённый Mac, когда следующий майлстоун требует паритета Safari и Chromium на железе клиентов. Свяжите приёмку воркера с тарифами, разделом помощи по SSH и VNC, затем перейдите к аренде или покупке без длинного закупочного цикла. Список статей: блог.
Аренда Mac для Safari и Chromium перед релизом
Проверьте install, waiting и activation на реальном Apple Silicon, приложите доказательства по кэшу и закройте тикеты быстрее аренды физического железа в офис. Тарифы и помощь доступны без входа; аренда или покупка — когда CI не воспроизводит WebKit.