Разработка PWA-приложения на 1С-Битрикс: кэширование, push, офлайн

Клиенты уходят, если сайт тормозит на слабой связи, — а заявки теряются. Мы разрабатываем PWA на Битрикс под ключ: кэширование, push-уведомления и офлайн-режим. Сокращаем потери заявок и ускоряем отклик интерфейса в разы.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка PWA-приложения на 1С-Битрикс: кэширование, push, офлайн
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1534
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1049
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    820
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    920
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    858
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1209

Почему PWA на Битрикс ломается на слабом канале

PWA на Битрикс чаще всего падает не на «слабом интернете» как таковом, а на стыке трёх вещей: service worker отдаёт устаревший кэш приложения, запрос к серверу обрывается на середине, а форма заказа уходит повторно. По отдельности каждый сбой выглядит безобидно, вместе они дают клиенту картину «сайт показывает старое, заказ продублировался, поддержка разбирается вручную».

Первый сбой — стратегия кэширования. Если статика и HTML кэшируются «навсегда», после релиза пользователь неделями видит старую версию страницы, а новая сборка лежит на сервере и никем не запрашивается. Лечится это не отключением кэша, а разделением: оболочка приложения обновляется по версии сборки, данные — по сети с фоновым обновлением, а тяжёлые ответы API не кэшируются вовсе.

Второй сбой — офлайн-режим на нестабильной сети. Запрос уходит, соединение рвётся на ответе, и приложение не знает, дошёл ли заказ до сервера. Если в этот момент показать «ошибка, попробуйте ещё раз», пользователь жмёт повторно — и получает дубль. Поэтому критичные операции (оформление заказа, заявка, оплата) ставятся в очередь с идентификатором операции: сервер по нему понимает, что это тот же запрос, и не создаёт вторую сущность.

Третий сбой — push и фоновая синхронизация. Уведомления, отправленные без учёта состояния подписки, уходят в пустоту, а очередь неотправленного копится в браузере и теряется при очистке данных. Здесь важна явная политика: что хранится локально, как долго, что происходит при конфликте локальной и серверной версии.

Разбираем, как это закрывается на стороне Битрикс: версионирование кэша, идемпотентная отправка форм и предсказуемое поведение при обрыве связи.

Что меняется после внедрения PWA

После установки PWA на устройство пользователя повторный запуск идёт из локального кэша: интерфейс, шрифты и основные блоки отрисовываются мгновенно, а данные подтягиваются фоном. На практике это заметно сокращает время до первого экрана по сравнению с обычным заходом в браузер, где каждый визит заново тянет те же ресурсы. Клиент получает эффект, который раньше давал только нативный клиент, но без отдельной сборки под каждую платформу.

Устойчивость к обрывам связи — второй измеримый результат. Service worker перехватывает сетевые запросы и отдаёт заранее закэшированные ответы, поэтому при слабом мобильном интернете или переходе между сетями страница не «падает» с ошибкой. Пользователь продолжает работать с интерфейсом, а отправленные формы ставятся в очередь и уходят на сервер, как только соединение восстановится.

Именно эта механика напрямую бьёт по потерянным заявкам. Раньше обрыв связи в момент отправки формы означал, что данные не дошли и клиент ушёл. Теперь заявка сохраняется локально и досылается автоматически — доля потерянных обращений падает, а вместе с ней снижается нагрузка на менеджеров, которым не нужно дозваниваться и уточнять.

Офлайн-работа и повторные визиты связаны между собой. Пользователь, открывший приложение без сети, всё равно видит каталог, историю заказов и статусы — и возвращается снова, потому что опыт предсказуем. Иконка на домашнем экране работает как постоянная точка входа, и доля повторных визитов растёт без дополнительных затрат на привлечение.

Чтобы понять, какой из этих эффектов даст прирост именно в вашем случае, нужно смотреть на текущую аналитику: где теряются заявки, как ведут себя мобильные пользователи, какие сценарии критичны для офлайна. Опишите задачу — вернёмся с оценкой и планом внедрения.

Способы реализации PWA: сравнение подходов

На практике выбор сводится к трём сценариям, и разница между ними — в том, сколько логики переезжает на сторону устройства. Обёртка над текущим сайтом оставляет всю отрисовку и данные на сервере, офлайн-слой переносит на клиент кэш и очередь запросов, гибрид дополнительно подключает нативное мобильное приложение как второй канал.

Вариант Когда подходит Ограничения
Обёртка над текущим сайтом Каталог, витрина, контентный портал: важны скорость повторных заходов и установка на домашний экран Без сети доступен только каркас и последние открытые страницы; формы и корзина требуют соединения
Отдельный слой офлайн-логики Полевые сотрудники, выездные бригады, торговые представители: работа в местах без устойчивой связи Нужна синхронизация с сервером и разрешение конфликтов при одновременной правке; растёт объём кэша на устройстве
Гибрид с мобильным приложением Нужны push-уведомления, камера, сканер, доступ к контактам и геолокации Дороже в разработке и поддержке: две кодовые базы и общий контракт на данные

Что решает выбор

Обёртка собирается быстрее всего и почти не меняет текущий сайт — её берут, когда цель в скорости и установке на экран, а не в автономности. Офлайн-слой требует продумать, какие данные кладём в локальное хранилище, что делаем с очередью неотправленных запросов и как помечаем устаревшие записи. Гибрид оправдан, когда без системных уведомлений и доступа к оборудованию сценарий не работает.

Где начинаются ограничения

Кэш нельзя держать бесконечно: правило обновления задаёт срок жизни данных и приоритет сети или хранилища для каждого типа запроса. Если этого не сделать, пользователь увидит устаревшую цену или остаток, а после синхронизации получит расхождение с сервером. Отсюда требование к версионированию схемы данных и явной стратегии отката — обновление не должно ломать уже установленное приложение.

Разбираем вашу задачу и подбираем вариант под сценарий использования, а не наоборот.

Этапы внедрения PWA Битрикс

Внедрение PWA на Битрикс — это не установка модуля, а последовательная инженерная работа: сначала фиксируем текущее состояние, потом проектируем кэширование, затем настраиваем и проверяем на реальных условиях эксплуатации. Ниже — этапы, которые проходит проект от старта до передачи.

Как устроен процесс

  1. Аудит. Снимаем карту страниц и запросов, смотрим, какие данные отдаёт сервер и что можно отдать из кэша. Отдельно разбираем авторизацию, корзину и формы — их нельзя кэшировать как статику, иначе пользователь увидит чужие данные. На выходе — перечень маршрутов с пометкой «кэшируем / только сеть / гибрид».

  2. Схема кэширования. Проектируем стратегии под каждый тип контента: оболочка приложения и статика — предзагрузка при установке, каталог — отдача из кэша с фоновым обновлением, персональные блоки — только сеть. Прописываем версионирование кэша, чтобы после релиза пользователь не застрял на старых файлах.

  3. Настройка. Регистрируем service worker, манифест, иконки и стартовые экраны, подключаем push-уведомления через серверную часть. Настраиваем поведение при потере связи: что показываем из кэша, что ставим в очередь на отправку.

  4. Проверка на слабом канале. Тестируем не в офисе с быстрым интернетом, а в условиях медленного соединения и полного офлайна: открытие, навигация, повторный вход, отправка формы после восстановления связи. Смотрим, как ведёт себя кэш при обновлении версии.

  5. Нагрузочная проверка. Убеждаемся, что кэширование не ломает учёт заказов и не создаёт дублей при повторной отправке.

  6. Передача. Отдаём документацию по схемам кэша, инструкцию по обновлению версии и чек-лист для релиза, чтобы правки вносила и ваша команда.

  7. Сопровождение. После запуска отслеживаем долю установок, глубину просмотра и число обращений в поддержку — по этим метрикам видно, где схему стоит донастроить.

Опишите ваш проект — вернёмся с оценкой и планом работ по этим этапам.

Кэширование и синхронизация данных

Кэш в PWA на 1С-Битрикс — это не «сохранить страницу целиком», а набор стратегий под каждый тип данных. Каталог и статические ресурсы отдаём по принципу «сначала кэш, обновление в фоне»: интерфейс открывается мгновенно даже на слабой сети, а свежая версия подтягивается следом. Персональные данные — корзину, избранное, статусы заказов — наоборот, строим по принципу «сначала сеть»: показываем актуальное, а кэш используем только как запасной вариант при обрыве. Смешивать эти подходы нельзя: именно на этом чаще всего и возникает расхождение данных у пользователя.

Фоновая синхронизация работает через очередь отправки. Действие пользователя — оформленный заказ, изменение количества, отметка о выполнении — сначала попадает в локальную очередь и сразу отражается в интерфейсе, а на сервер уходит, как только появляется связь. Если соединение пропало на середине, запрос не теряется: он остаётся в очереди с признаком «не подтверждён» и повторяется при возврате в сеть. Так сценарий «заполнил форму в лифте — отправилось на улице» работает без потери данных.

Конфликты данных решаем на стороне сервера, а не «кто последний, тот и прав». Для каждой сущности задаём правило слияния: заказы и платежи — приоритет серверной версии, пользовательские пометки и черновики — приоритет локальной. Если версии расходятся критично, система не перезаписывает молча, а помечает запись и отдаёт её на подтверждение. Это защищает от классической ситуации, когда два устройства правят одну запись и одно молча затирает работу другого.

Актуальность держим через версионирование ответов: сервер отдаёт метку изменений, клиент сравнивает её со своей и запрашивает только дельту, а не весь список. После возврата в сеть пользователь видит не «загрузку с нуля», а точечное обновление — интерфейс остаётся отзывчивым, а трафик не растёт пропорционально объёму данных.

Что заказчик получает на руки

Передаём не «готовое приложение», а комплект, по которому ваша команда сможет эксплуатировать и развивать PWA без нас. Каждый артефакт закрывает свой класс задач: кэш отвечает за скорость и офлайн, схемы синхронизации — за консистентность данных между клиентом и сервером, политики доступа — за то, что видит конкретная роль.

  • Конфигурации кэша — стратегии для статики, API-ответов и карточек товаров: что кладём в precache при установке, что обновляем в фоне, что отдаём из сети с откатом на копию. С указанием времени жизни записей и правил инвалидации при изменении контента.
  • Схемы синхронизации — диаграммы потоков данных: какие сущности уходят в фоновую очередь при отсутствии связи, в каком порядке отправляются при восстановлении, как разрешаются конфликты версий между устройством и сервером.
  • Политики доступа — матрица ролей и прав на уровне PWA: какие разделы и данные доступны гостю, авторизованному пользователю, сотруднику; как токены обновляются и что происходит при истечении сессии.
  • Push-сценарии — перечень триггеров (статус заказа, новое сообщение, акция), шаблоны уведомлений и правила сегментации получателей, чтобы рассылка не превращалась в спам.
  • Документация — описание архитектуры, точек интеграции с 1С и Битрикс, инструкция по локальному запуску и сборке для разработчиков.
  • Регламенты обновления — порядок выпуска новой версии: как сообщаем клиентам о смене кэша, как откатываемся на предыдущую сборку, кто и когда проверяет совместимость с текущим ядром.
  • Чек-лист приёмки — сценарии, по которым проверяем офлайн-режим, установку на домашний экран, работу уведомлений и корректность данных после рассинхрона.

Всё это передаётся в вашем репозитории с доступом для команды. Опишите задачу — вернёмся с оценкой и планом по вашему контуру.

Чем отличается PWA от нативного приложения?

PWA и нативное приложение решают одну задачу — дать пользователю быстрый доступ к сервису с телефона, — но по-разному устроены. Нативная программа ставится из магазина приложений, живёт в отдельном контуре и обновляется через публикацию новой сборки с модерацией. PWA открывается по обычному адресу, а при необходимости устанавливается на домашний экран ярлыком: тот же интерфейс, те же данные, но без отдельной кодовой базы под каждую платформу.

Стоимость владения отличается принципиально. Нативное приложение — это два-три параллельных проекта под разные платформы, у каждого свой релизный цикл, свои проверки в магазинах и свои требования к обновлению. PWA строится на едином коде поверх сайта на Битрикс: логика, вёрстка и интеграции переиспользуются, а не дублируются. Расходы на поддержку перестают умножаться на число платформ — команда сопровождает один продукт вместо нескольких.

Скорость обновлений — второе ключевое отличие. Магазины приложений добавляют к каждому релизу проверку, которая может занять дни, а часть правок отклоняется по формальным причинам. В PWA новая версия выкладывается на сервер и подхватывается при следующем открытии: сервис-воркер отдаёт свежие файлы из кэша, а старые версии вытесняются по правилам. Исправление критичного бага доходит до пользователей за минуты, а не за недели согласований.

Требования к установке тоже расходятся. Нативное приложение нужно сначала найти в магазине, скачать, дождаться загрузки и только потом запустить — каждый шаг теряет часть аудитории. PWA работает сразу по ссылке: пользователь попадает на сайт, пользуется им, а установка на домашний экран предлагается как необязательный шаг. Барьер входа ниже, а конверсия из первого визита в повторный выше.

Есть и границы. Нативная программа глубже работает с железом: камера, Bluetooth, фоновая геолокация, системные уведомления доступны без ограничений. PWA закрывает большинство сценариев — push, офлайн-режим, работа с камерой, — но там, где нужен постоянный доступ к датчикам в фоне, нативная сборка остаётся точнее. Поэтому выбор — не «или-или», а вопрос того, какие функции критичны для вашего сценария.

Кейс: как PWA сократил потери заявок

Клиент — сервисная компания с выездными бригадами — принимал заявки через веб-форму на сайте под управлением 1С-Битрикс. Бригадиры работали с планшетов в подвалах и на объектах без устойчивой связи: форма отправлялась, но при обрыве сети запрос терялся, и клиент видел «ошибка отправки». Потери доходили до четверти обращений в часы пик, а диспетчер узнавал о пропаже только по звонку раздражённого заказчика.

Что изменили

Собрали PWA-обёртку поверх существующего фронтенда: service worker перехватывает отправку формы, кладёт заявку в локальное хранилище устройства и повторяет запрос, как только сеть возвращается. Конфликты решаем по клиентскому идентификатору заявки — дубли при повторной отправке не создаются. Push-уведомления через сервис-воркер сообщают диспетчеру о новых обращениях, а бригадиру — о смене статуса, даже когда вкладка закрыта.

Метрики до и после

Показатель До После
Доля успешных отправок формы ~76% 99,4%
Время восстановления после сбоя сети до 40 минут, вручную секунды, автоматически
Обращения в поддержку по «заявка не ушла» 30-40 в неделю единичные
Повторные звонки клиентов с уточнением регулярно практически исчезли

Отдельно отметили эффект на диспетчерской: раньше половина рабочего времени уходила на сверку «что дошло, что нет», теперь поток заявок виден в реальном времени. Время восстановления после сбоя перестало быть ручной операцией — система сама досылает накопленное, когда связь появляется.

Частые технические сомнения

PWA-слой встаёт поверх существующего ядра 1С-Битрикс, а не заменяет его: сервис-воркер перехватывает запросы и отдаёт закэшированные ответы, пока ядро и модули работают как обычно. Поэтому совместимость определяется не самим PWA, а тем, насколько аккуратно описаны правила кэширования для динамических страниц — корзины, личного кабинета, результатов поиска. Стандартные модули («Интернет-магазин», «Информационные блоки», «Универсальные списки») не требуют переписывания: для них настраиваются отдельные стратегии — статика и каталог кэшируются, персонализированные ответы идут только по сети.

Не сломает ли PWA текущие модули и обновления?

Сервис-воркер регистрируется на уровне шаблона и не вмешивается в серверную логику модулей. Обновления ядра и модулей проходят штатно — правила кэширования привязаны к путям и типам ответов, а не к внутренним вызовам компонентов. После крупного обновления прогоняем регресс по критичным сценариям: авторизация, оформление заказа, оплата, чтобы кэш не отдавал устаревшее состояние.

Безопасность данных: что попадает в кэш на устройстве?

В кэш уходят только публичные ресурсы — вёрстка, скрипты, изображения, каталог. Токены авторизации, содержимое личного кабинета и платёжные данные не кэшируются: для них явно задан режим «только сеть». Push-подписки хранятся отдельно от пользовательских данных и привязаны к сессии, при выходе из аккаунта подписка отзывается.

Как PWA влияет на SEO и индексацию?

Поисковые роботы получают тот же серверный HTML, что и раньше, — сервис-воркер для них не активируется. Адреса страниц не меняются, поэтому накопленные позиции и ссылочная масса сохраняются. Установка приложения на устройство добавляет второй канал возврата пользователей, не конкурируя с поисковым трафиком.

Что с офлайн-режимом и обновлением контента?

Офлайн отдаётся заранее выбранный набор: главная, каталог, ранее открытые страницы. Когда связь возвращается, сервис-воркер синхронизирует изменения в фоне, а версия кэша поднимается автоматически — пользователю не нужно переустанавливать приложение, чтобы увидеть свежие данные.

Обсудим вашу задачу

Чтобы вернуться с оценкой и планом, а не с общими словами, нам нужен контекст по вашей задаче. Опишите, что уже работает и что болит: какой раздел каталога или личный кабинет должен уходить в офлайн, какие действия критичны без сети, есть ли действующая авторизация и как устроен обмен с 1С. Этого достаточно, чтобы понять объём и предложить реалистичный план.

Что стоит приложить к описанию:

  • текущий адрес сайта или прототипа и краткое описание продукта;
  • какие сценарии должны работать офлайн и какие данные для них нужны;
  • как сейчас устроены вход пользователя, корзина и оформление заказа;
  • откуда приходят уведомления и что должно попадать в push;
  • какие интеграции с 1С и внешними сервисами уже есть;
  • есть ли ограничения по срокам, доступам и окружению;
  • кто со стороны заказчика принимает решения по продукту.

По итогам разбора мы возвращаемся с оценкой по этапам, планом работ и списком того, что потребуется от вашей стороны: доступы к репозиторию и панели управления, тестовый контур, контакт интегратора 1С. Дальше согласуем порядок: сначала базовый офлайн-каркас и кэширование, затем push и синхронизация, потом нагрузочная проверка на реальных сценариях.

Опишите задачу в удобной форме — вернёмся с оценкой, планом и следующими шагами.