Строим цифровой фундамент для вашего бизнеса!

Когда ты много лет работаешь с сайтами, мало что может тебя удивить. Но иногда попадается баг настолько странный, что ты невольно начинаешь подозревать, что на стороне сервера завёлся полтергейст. Сегодня я расскажу, как Cloudflare решил «помочь» и чуть не разрушил запуск нового сайта. Спойлер: дело было в кэше.


📦 Контекст: сайт, который должен был просто заработать

Есть два домена — пусть будут site-old.ru и site-new.ru. Первый — старый сайт на Joomla 3, с классическим модулем обратной связи mod_pwebcontact. Второй — новый, свежий, на Joomla 5. Всё перенесли, настроили, протестировали. Казалось бы, дело за малым: сменить домен и запустить новый сайт.

Так и сделали: сайт на site-new.ru заработал, и всё было отлично... до тех пор, пока мы не увидели, что формы перестали работать.

В консоли браузера красовалась ошибка:

Uncaught TypeError: this.options.onLoad is null

Анализ показал, что модуль формы ломается из-за того, что пытается вызвать onLoad, которого нет. Но ведь мы обновили компонент! Мы удалили старые шаблоны! Мы сбросили кэш Joomla и браузера! Что ещё нужно этому сайту?!


Исследование: с чем мы имеем дело

В какой-то момент стало очевидно: поведение сайта зависит не от кода, а от чего-то внешнего. Одним из подозреваемых стал Cloudflare. Включили Dev Mode — форма заработала. Выключили — снова упала.

Ага, значит дело в нём.

Cloudflare кэшировал HTML старых страниц, включая скрипты и inline-инициализацию модуля mod_pwebcontact, где onLoad почему-то был null. Когда новый сайт поднимался на том же домене, Cloudflare радостно подсовывал браузеру этот устаревший и несовместимый скрипт из своей памяти.

Что особенно интересно — кэшировалась не только страница, но и массив параметров JavaScript, сгенерированный сервером для формы. То есть мы буквально видели новый сайт, но с настройками старого компонента.


Развязка: осознать и нажать «Purge Everything»

Решение оказалось банально простым: мы просто очистили кэш на стороне Cloudflare полностью. Мгновенно:

  • исчезли ошибки в консоли
  • форма инициализировалась корректно
  • новый компонент работал, как и должен

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


Выводы и советы коллегам

  1. Cloudflare кэширует больше, чем ты думаешь — включая inline JS и HTML.
  2. При смене CMS, компонентов или форм всегда сбрасывай кэш полностью.
  3. Включай Dev Mode на этапе тестирования нового сайта на боевом домене.
  4. Если форма падает с onLoad is null, ищи не в коде, а в источнике старого кэша.
  5. Для критичных компонентов (формы, корзина, AJAX-запросы) настраивай Page Rules Cache Level: Bypass.

 Этот кейс научил нас быть осторожнее с тем, что по умолчанию «помогает». Автоматизация хороша, пока ты контролируешь, что именно она автоматизирует.

Надеюсь, этот разбор сэкономит кому-то несколько бессонных часов и спасёт запуск очередного сайта :)