Забавное приключение с кавычками … UPD. Сloudflare auto minify

Тут вчера отвалился сайт, ЧМУ. Почти сразу удалось понять что шаблонный механизм творит чудеса. Выводит то, что в шаблоне в одинарных кавычках, в — двойных и отделяет это все пробелами.

В итоге, конечно, ява-скрипт отваливается и не работает, так как найти элементов DOM  — не может.

Забавность оказалось в том, что в разных компьютерах, входящих в одну и ту же (мою) подсеть данная неисправность появляется или не появляется. Айпи выходной — один и тот же в обеих случаях.

Как удалось найти, что это именно так.Простейшим скриптом на пхп. Вот компьютер на WindowsXP + PHP5.2.10. Вот скрипт:

А вот что он сохранил в файл, пробелы видны думаю … 

Теперь иду на другой компьютер который Виндовс7 и пхп. Запускаю тот же скрипт. И вот что сохраняется :

Пробелов нет. Понятное дело на первом компьютере с ВиндовсХП на сайте глюки, а на втором — все ок.

Для тех, кто не поймет — нет никакого браузера. Просто пхп сохраняет данные в файл. В чистом виде получает и сохраняет.  По разному. Забавно это очень. Если бы я не правил эти кавычки, как видите двойные — не раздвигаются, много часов подряд вчера и сегодня …

Заголовки, как берутся видно:

в первом случае (там где вставляются пробелы):

во втором случае (все ок, нет пробелов)

Как видите данные отдают два разных сервера. nginx/1.6.2 в одном случае, а в другом —  CloudFlare Nginx

Забавно правда? Два компьютера в одной сети. С разным TTL. Все — разницы больше нет. А облачным сервисом выдаются по разному

UPD. Оказалось, что все работает если указать ДНС напрямую в hosts. Коню понятно, что так было указано только у разработчиков, и они не видели ошибок. Хорошо, что подсказали … не понятно сколько бы оно еще доходило. Теперь можно начать искать как пофиксить … блин старею.

UPD, Помогли мне найти. Оказывается облачные сервисы теперь оптимизируют выдачу. Ну вот такое вот в стиле, в странице:

если это включить в выводе оно стает вот чем:

С учетом выдачи пустоты функцией помогает минификатору облачного сервиса CF  — просканировать всю страницу и вставить пробелов перед/после одинарных кавычек. Век учись …

UPD2  Пояснили что произошло. Обратите внимание. Если на облачном CF включить это вот (Auto Minify — для экономии трафика, например):

то сервер у них начинает постобрабатывать. И получается, что если у вас ДНС указывает на  прямую локацию (хостс резолв), — то вы не увидите результат. А если как обычно — на провайдера, то увидите. Да… охрененьки …

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *