Композитный сайт Юрий Тушинский «Битрикс», технический директор.

Презентация:



Advertisements
Похожие презентации
Композит – ваш сайт не тормозит Антон Герасимюк Ведущий разработчик, 1C-Битрикс Партнерская конференция 2015.
Advertisements

D7 – новая платформа разработки сайтов и порталов Тушинский Юрий Технический директор Битрикс.
Как улучшить производительность проекта за три шага Шаромов Денис руководитель отдела техподдержки.
Аспекты увеличения быстродействия «1С-Битрикс: Управление сайтом» на виртуальном хостинге Артём Рябинков 1С-Битрикс.
Рекомендации по работе со службой технической поддержки Шаромов Денис руководитель отдела техподдержки.
КУРС «WEB-ДИЗАЙН». Что такое Web-страница? То, что мы видим в окне браузера, когда заходим на какой-либо сайт! Мы видим веб-страницу сайта – ее содержимое!
Разгони свой сайт Лекция 3: Кэширование Мациевский Николай 1 / 19 webo.in.
Внутренний SEO-аудит Актуальные проблемы сайтов Партала Кирилл Начальник отдела интернет-маркетинга.
Как снизить нагрузку на высокопосещаемый проект? Технический директор «Ленвендо» Виталий Гаврилов +7 (812) (Санкт-Петербург) +7 (495)
Программируем back-end. 2 Компоненты Шаблоны Ничего нового - все по старому* * - но есть особенности Как?
Проф. В.К.Толстых, Выполнил студент: Тышлек С.В., 2009 Технологии разработки Internet- приложений Из цикла лекций «Технологии разработки.
Повышение качества результатов анонимного интернет-голосования на основе анализа сетевых объектов Студеникин Роман Науч.рук. Гамаюнов Денис.
Разгони свой сайт Лекция 1: Особенности клиентской оптимизации Мациевский Николай 1 / 23 webo.in.
BitrixMobile Юрий Тушинский Технический директор Битрикс.
Александр Сербул Руководитель направления контроля качества интеграции и внедрений Автоматическая проверка безопасности интернет-проектов.
Архитектура «D7»: модули, классы, жизненный цикл Кирсанов Алексей Ведущий разработчик 1C-Битрикс.
BigData персонализация в магазины. Раскроем черный ящик Юрий Тушинский «Битрикс», технический директор Александр Сербул «1С-Битрикс», руководитель направления.
Автоматический бэкап в облако 1С- Битрикс Шаромов Денис руководитель отдела техподдержки.
Подпрограммы 1.Принцип модульности 2.Область действия переменных 3.Параметры подпрограмм 4.Модули.
AJAX Выполнила: студентка группы ПИ-311 Газизова Влада.
Транксрипт:

Композитный сайт Юрий Тушинский «Битрикс», технический директор

Основная идея Максимально быстро отдать пользователю страницу из кеша Дополнительным ajax-запросом проверить валидность кеша и получить данные динамических областей. До После Ajax-запрос

Динамический контент Сайт логически делится на статические и динамические области. Статическая область сохраняется на диск и отдается сразу и целиком. Динамические области: отличаются для разных пользователей часто меняются (секунды или минуты) не могут быть вложенными Контент динамических областей возвращается в ajax-запросе. Список новостей – это не динамическая часть!

Как работает

Включение и настройки Хранение кеша Файлы (папка /bitrix/html_pages/) Memcached Отдача кеша PHP (по умолчанию) Nginx (требуется дополнительная настройка)

Включение и настройки

Условие включения режима Только GET-запросы Это не HTTPS Это не IE6-9 (main ) Запрос не начинается с /bitrix Это не ajax-запрос, сделанный с помощью BX.ajax Нет cookie _NCC Запрос не входит ни в одну из масок исключения Запрос входит хотя бы в одну маску включения Проверка параметров в query_string согласно настройкам

Голосование «за» и «против» Компоненты и шаблоны, подключенные на странице, голосуют за композитный режим По умолчанию компоненты голосуют «за», а шаблоны – «против» Если хоть один из них проголосовал против, то для страницы режим включен не будет В этом случае в журнал отладки AddMessage2Log делается запись (если включена константа BX_COMPOSITE_DEBUG)

Отладка dbconn.php: define("BX_COMPOSITE_DEBUG", true); define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log.txt"); В папке кеша /bitrix/html_pages/ / файлы перед перезаписью копируются в *.delete. Вызывается функция AddMessage2Log когда компонент или шаблон голосуют против когда создается файл *.delete когда превышена дисковая квота

Отладка

Шаблон до интеграции

Шаблон голосует «за»

Выделение динамической области

->begin('') – пустая строка означает пустую заглушку ->begin('Загрузка…') ->begin() – контент динамической области является заглушкой (запишется в кеш).

Свой контейнер и инициализация JS

Динамический контент вне компонента Динамическая область может находится и вне контекста компонентов (шаблон сайта, php-страницы) $frame = new \Bitrix\Main\Page\FrameHelper("my_dynamic_area"); $frame->begin(); //динамический контент $frame->beginStub(); //заглушка $frame->end(); \Bitrix\Main\Page\Frame::getInstance()->startDynamicWithID("area"); // некоторый динамический контент вне компонента \Bitrix\Main\Page\Frame::getInstance()->finishDynamicWithID("area", stub"); Способ с буферизацией. Удобнее, но нельзя использовать отложенные функции.

Алгоритм интеграции Проверить отсутствие в логах голосов «против» Обновить страницу и проверить отсутствие лога с информацией об удалении файла из кеша Если такие файлы есть, то сравнить их и устранить причину различий

Что приводит к перезаписи кеша Случайные строки (ID сессии, id для JS-объектов и др.) Метод компонента randString() обеспечивает стабильную генерацию псевдо-случайных величин Сколько раз его ни вызывай в шаблоне – это не повлияет на другие компоненты/шаблоны Для разных пользователей выводится разный контент Если на странице подставляется REQUEST_URI (в form[action], back_url и. т. п.), т.к. site.ru/folder/ и site.ru/folder/index.php – это один файл кеша. Если контент меняется на каждом хите (баннеры, текущее время)

Работа с локальной БД браузера

Осторожно используем BX.message В закешированной странице нет следующих JS-данных: BX.message("USER_ID") BX.message("bitrix_sessid") или BX.bitrix_sessid() BX.message("SERVER_TIME") BX.message("SERVER_TZ_OFFSET") BX.message("USER_TZ_OFFSET") BX.message(USER_TZ_AUTO") Приходят с ajax-запросом и кэшируются в localStorage Если происходит обращение к этим данным и их нет в localStorage, происходит блокирующий ajax-запрос

304-ответ Для статического кеша отдается HTTP-заголовок Last-Modified Браузер делает Conditional Get-запрос с заголовком If-Modified-Since Для связки NGINX+Memcached заголовок будет 200

Считаем миллисекунды Композитный режим влияет только на время ожидания ответа от сервера (Server Response Time) Не влияет на время: DNS lookup, TCP соединения Загрузки JS, CSS и картинок Учет композитных страниц в Google Analytics Google Analytics и Яндекс.Метрика собирают данные клиентской загрузки на основе Navigation TimingNavigation Timing

Где лежит кеш и как его удалять Настройки продукта -> Автокеширование Вкладка Очистка файлов кеша php -f /path/to/site/bitrix/modules/main/tools/cron_html_pa ges.php 10 Удалит все файлы, которые были созданы раньше, чем 10 часов назад Если изменился шаблон сайта, имеет смысл удалить весь кеш.

Планы развития Удобный инструмент для отладки Уход от констант и текстовых логов Логирование причин, из-за которых не сработал композитный режим Визуальное сравнение версий страниц Упрощение настройки nginx Автоконфигуратор правил на основе настроек в админке Персонализированный кеш

Где почитать? Учебный курс: Документация на сайте: Посты в блоге Антона Герасимюка:

Спасибо за внимание! Вопросы?