+7 707 858 58 37
help@vpsadm.ru
Как кэшировать или сжимать внешние скрипты js? Проксирование любых внешних ресурсов через свой сайт!

Ошибка block mixed content  на https сайтах. Фреймы и https

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

Проксирование через apache или nginx

А будем решать проблему с подгрузкой внешних ресурсов по https, а не по http, как эти самые внешние ресурсы предоставляются.  Решение видится довольно простым.  Ваш сайт работает на nginx или apache. А оба эти замечательных вебсервера позволяют проксировать  что угодно, через себя:

Если в костыле apache это реализуется  костылём подключаемым модулем mod_proxy, то у nginx это вообще основная концепция работы с чем-бы то ни было. По сути, он всё и всегда делает именно с помощью проксирования. Связка nginx+apache — не что иное как проксирование всего вашего сайта работающего на apache.

Зачем еще может понадобиться проксирование?

Кстати, проксирование —  это очень крутой способ при переезде сайта с одного сервера на другой для мгновенного перенаправления трафика. Ведь при переезде мы обычно переключаем DNS на новый сервер, а DNS по регламенту может обновляться до 2-х суток. И хотя обычно это занимает пару часов, у отдельных пользователей, провайдеры которого редко обновляют DNS ваш сайт может еще долгое время резолвится на IP старого сервера.  А это значит, что в течение  некоторого времени, часть пользователей будет попадать на старый сайт, а часть на новый. Если это какой-нибудь информационный сайт — то проблем никаких. Просто не выключаем старый сервер и сайт работает в двух местах параллельно, пока происходит обновление DNS. Но если у вас интернет-магазин? Или какой-то сервис? Такой подход может привести к когнитивному диссонансу   к тому, что часть заказов пойдет на старый сервак, а часть на новый. И на новом какие-то заказы будут проёбаны. Чтобы этого не допустить как раз и помогает проксирование. Переносим сайт, а потом на старом сервере проксируем все запросы на новый сервер.  Вуаля!

Проксирование скриптов и других внешних ресурсов

К примеру, гугл Pagespeed Insights  показывает вот такое, по поводу счётчиков:

pagespeed-and-counters

Когда люди просят включить кэширование, они потом видят что гугл всё равно их показывает и приходится объяснять, что это внешние скрипты, бла-бла-бла, их не получится кэшировать.

Вот так это работает обычно:

podgruzka-vneshnie-resursy

Загрузка скриптов это вообще история отдельная, и как оказалось, довольно запутанная. Вот нашел отличный материал о том, как браузеры подгружают скрипты.

На самом деле решить это можно именно таким способом — включить проксирование для скрипта.

Nginx

Добавляем такой код в файл конфигурации:

location = /metrika.js {
proxy_pass https://mc.yandex.ru/metrika/watch.js;
proxy_set_header Host mc.yandex.ru;
}

И после этого  ресурс  http://vpsadm.ru/metrika.js  будет отдавать этот скрипт именно через ваш сайт.

А для него мы уже можем выставить expires 7d , как того желает гугл.   На свой страх и риск, конечно, ибо если вдруг скрипт обновится у яндекса, ваши юзеры будут ходить на сайт со старой версией в кэше браузера. Но это уже другой вопрос.

Миф сеошников о том, что оценка гугла влияет на ранжирование

Вообще вся эта оценка гугла хуйня полная, она нигде и ни на что не влияет. Влияет скорость загрузки страниц.   А оценка — миф сеошников.  Они часто клиенту жуют эту песню, потому что никаких реальных рекомендаций   дать не могут. Так что запомните — если сеошник начал грузить вас тем, что у вас мол страницы не оптимизированы по гуглу, или еще по каким-то сервисам — шлите его нахуй.  Он просто не знает что еще вам сказать по делу.   Более того, когда я прошу у людей графики и результаты тестов  на эту тему — ну вот вы «оптимизировали» раньше  — результаты есть?  Они затыкаются сразу. Потому что нигде и ни у кого таких результатов нет. Если страница грузится в рамках секунды — любые заикания об оптимизации — ересь полнейшая.   Я это говорю, потому что сам заказывал три аудита, слышал всё это, и после оптимизации не видел эффекта.

А откуда тогда все эти сказки?

Вот хороший материал по теме:

http://www.shopolog.ru/metodichka/analytics/kak-0-1-sekundy-uskoreniya-zagruzki-sayta-mozhet-dat-milliony-dollarov-dopolnitel/

Там куча графиков, но все зависимости начинаются для ВРЕМЕНИ ЗАГРУЗКИ СВЫШЕ 1-2 секунд!

Об этом же рассказывается и вот в этой инфографике:

http://www.shopolog.ru/metodichka/development/kak-skorost-zagruzki-sayta-otrazhaetsya-na-pozitsiyakh-v-google/

 

proxirovanie-vneshnih-scriptov

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

Тем не менее, метод хорош, при желании можно подгружать всё что угодно во фреймах, даже те сайты, которые запрещают грузить себя во фреймах. Хотя есть выход в субдоменах.  Для субдомена можно сделать  полное проксирование всех ресурсов с внешнего сайта.  Дорвейщики  наверняка сталкивались, что не могут сливать трафик напрямую на сайт офера,  если у того в хедерах запрет загрузки во фреймах. Как это называется — Content Security Policy?

Проксирование в Apache

Я давал в самом начале ссылку, по ней все хорошо рассказано.  Нужно чтобы в апаче был включен mod_proxy.

А дальнейшая настройка сводится к добавлению пары строчек в конфигурацию сайта (виртуалхоста):

ProxyPass "/metrika.js" "https://mc.yandex.ru/metrika/watch.js"
ProxyPassReverse "/metrika.js" "https://mc.yandex.ru/metrika/watch.js"

Вот такие дела, господа. Магия 🙂
За применение думайте сами, куда вам это может пригодиться. А так,  штука хорошая.

Отправить ответ

Notify of
avatar
Mr Morj
Гость

Чел, проверь отображение на мобильных устройствах, при длинных урлах скролл появляется

Андрей
Гость

А будет пост о том как узнать какой сайт/процесс грузит впс-ку? В гугле ничего конкретного. Пробовал server-status но апач не загружается после редактирования конфига. Т.е. не просто апач/mysql/нгикс виноваты, а какие процессы его так загрузили.

политический импотент
Гость

Дядя зачем ругаешься матом на деятелей url & title. Google page Speed дает лишь удобоваримое представление о скорости, подходящее для тех кто пользуется Adwords. Те кто оптимизируют скорость — знают чем пользоваться, например gtmetrix.com
Но вы дядь, ругаете по чем зря не понимая основы связи скорости и позиций сайта.
Суть кроется в этом наводящем вопросе: два абсолютно не знакомых сайта с одинаковой информацией, один медленный а второй быстрый, каким будешь пользоваться и на каком ПФ (поведенческие факторы) будут лучше?

seoonly.ru
Гость

Весьма недурно! Спасибо!

wpDiscuz