Нелинейный рост стоимости облуживания от сложности сайта
23.04.2020Интересный пример из практики, которым хотелось бы поделиться. Дано: плагин для карт osm, к которому подкатило обновление, плагин для оптимизации autoptimize и внешний кеш через cdn cloudflare. Казалось бы, ну что может пойти не так?)))
Накрутив много всякого на блоге я ВНЕЗАПНО обнаружил дичайшие тормоза. Непорядок. В качестве решения я взял плагин autoptimize, который умеет собирать все css и js в одну кучу, а также реализует механизм lazy load — так называемая «ленивая загрузка», когда картинки подгружаются после рендера страницы, что в сумме даёт как физический, так и визуальный прирост скорости. Это не полноценный кеш, поэтому время загрузки хоть и сократилось, но недостаточно чтобы удовлетворить мои хотелки. Далее я воспользовался сервисом Cloudflare — помимо всякой защиты от ddos реализуется механизм внешнего кеширования, причём всё это ещё и раскидывается по датацентрам где-то там в разных концах нашей плоской Земли… Не сказать что летает, но вполне комфортно.
Итак, прикатывает обновление плагина. Я честно обновляюсь (попутно ещё патчу под свои хотелки, но это отдельная история), проверяю — всё работает. Отлично? Не-а… Зайдя в следующий раз, я обнаруживаю что морду блога распидорасило! Дальше начинается весёлый квест, суть которого в нахождении проблемы, которая непонятно откуда взялась, ведь я же как умный человек всё проверил и всё работало! Ага, классическое «я ничего не делал, оно само!!!«.
Оказалось, что в плагине обновились версии библиотек, на что я не обратил внимания, ну кто в здравом уме вчитывается в release notes к каждому плагину? А эти самые библиотеки обязательно нужно добавить в исключения по оптимизации, потому что не хотят они работать будучи собранными в один файл. Далее всё это хозяйство через некоторое время перезакешировалось и полный трам-пам-пам.
Мораль: по возможности будьте проще! Три вполне ходовых технических решения в сумме могут потребовать для обслуживания не блондинку обученную постить фоточки, а красноглазого бородатого мальчика умеющего в консоль.
P.S. Этот пост не является инструкцией по оптимизации, на эту тему я накатаю отдельно и обширно, как только разберусь и оттестирую — там будет и по шрифтам и по внешним библиотекам и по картинкам…