Легкий способ потерять клиентов или почему не следует использовать Google CDN


    Если вы разрабатываете веб-приложения и ссылаетесь на популярные JavaScript-библиотеки и шрифты, эта статья будет вам определенно полезна.


    Проблема


    Согласно Википедии, в Китае с 2014 года заблокированы все ресурсы Google, включая поиск, карты, Gmail, Google Play и Google API. Это означает, что ваши пользователи, находясь в Китае, не смогут загрузить те ресурсы с CDN, на которые вы ссылаетесь. Хорошо, если речь идет только о шрифтах, — в этом случае ваш сайт лишь будет выглядеть иначе, чем задумывал дизайнер. Гораздо хуже, когда речь идет о JavaScript, ведь с большой вероятностью ваш сайт просто сломается. Стоит отметить, что у "Великого Китайского Файрвола" есть одна интересная особенность: браузер будет ждать ответа от заблокированного ресурса до тех пор, пока не случится таймаут. Таким образом, если вы загружаете свой JavaScript синхронно, то в течение 30 секунд ваш пользователь будет смотреть на белую страницу, которая в итоге, конечно, загрузится, но едва ли окажется функциональной.


    Update: для пользователей Крыма эта проблема тоже актуальна, так как часть сервисов Google там не работает.


    История вопроса


    "Великий Китайский Файрвол" — термин, широко используемый в средствах массовой информации, который определяет инициативу китайского правительства по регулированию интернета в материковом Китае. Это главный инструмент по внедрению цензуры в китайском обществе наравне с уголовными законами, запрещающими распространение определенных идей в сети. Действует с 2007 года.


    Но у меня же нет клиентов в Китае


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


    Как решить проблему


    Очень просто: достаточно использовать любой другой CDN, убедившись в его доступности, либо перенести все ресурсы, которые вам нужны, на собственные сервера.


    Если вы пользуетесь Google Analytics или социальными кнопками (Facebook и Twitter, к слову, тоже заблокированы), это почти никак не скажется на работе вашего сайта за исключением двух неприятных эффектов: социальные кнопки не появятся на вашей странице, а индикатор загрузки будет активным еще в течение примерно 30 секунд после того, как страница фактически загрузится.


    VPN как решение проблемы


    Широко распространено мнение, что VPN может решить все проблемы. Это не совсем правда:


    • использование VPN с целью обхода блокировок законодательно запрещено;
    • большинство людей будут испытывать сложности в процессе настройки VPN'а;
    • Китай постоянно ищет новые способы поиска и блокировок VPN-провайдеров. То, что работает сегодня, может перестать работать уже завтра;
    • благодаря "Великому Китайскому Файрволу" международный интернет в Китае временами работает очень медленно. VPN, как правило, делает ситуацию только хуже.

    Заключение


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

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 32

      +11

      Капитанская статья, да и заголовок желтоват. Почему именно гугл? Такие проблемы могут постичь любой сторонний CDN. А если ты подключаешь в своём проекте с большой клиентской базой библиотеки из сторонних CDN, то виноват не гугл, а только ты сам. Поднимай свою сеть, не надейся на чужих людей, которые тебе ничего не должны.


      К слову, недоступность CDN не самая большая проблема. Хуже, если её скомпрометируют, и вместо обычной библиотеки будет отдаваться её вредоносная копия. Такое уже было с jquery.

        +1
        +1

        Google тут вообще не при делах, ни в общем случае, ни как пример для статьи. Особенно для заголовка.
          +1

          Сори за капитанский ответ, но потому, что гугл заблокирован в Китае, где проживает пятая часть населения планеты. Речь не о том, что CDN — это зло, а о том, что использование именно Google CDN портит ваш сайт для части вашей аудитории.


          Выбор CDN'а и само решение его использовать выходит за рамки статьи, потому что это не реклама, а желание сделать интернет доступнее и лучше

            0
            Речь не о том, что CDN — это зло, а о том, что использование именно Google CDN портит ваш сайт для части вашей аудитории.

            Ну это понятно. Просто гугл и Китай — это один частный пример.
            В общем же можно было сказать так: в продакшене не подгружайте жизненно необходимых ресурсов (особенно тех, которые в head) на страницу из внешних источников, если не уверенны на 99% в их доступности. И используйте CDN по назначению, а не просто как внешнее хранилище крохотных css-стилей и js-библиотек.

              +1

              Я физически проживаю в Китаю и страдаю от того, что у того же StackOverflow загрузка страницы занимает 30 секунд без VPN. Так что для меня это пример ни разу не частный :)


              Я абсолютно с вами согласен по поводу head'а, и это один из вариантов решения проблемы.


              Статья не является "наездом" на Google — он тут ни при чем. Это призыв к разработчикам починить свои сайты, потому что многие коллеги даже не догадываются о существовании этой проблемы.

              +1
              Сделать geoip на уровне фаервола и dnat на порт, где слушает версия сайта с каким-нибудь китайским cdn-ом прокатит?
                0

                Почти всегда да, если geoip достаточно точный. То ли Apple, то ли кто-то еще из "больших", кому китайский рынок важен, так делает

              +1
              Согласен, абсолютно любой CDN может быть заблокирован госорганами конкретной страны. На этот случай всегда нужно иметь фолбеки.
                0
                Взвешивать надо…
                Кто-то может и электричество сам производит под ИТ.
                А кто-то все в лямды в облаках запихал и радуется… На клиента надо ориентироваться…
                  0

                  Проблема подмены решается сим: https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity.

                  +1

                  Я как то Cloudflare пользовался бесплатно. Так в один момент их IP попадал под блокировку РКН а потом перестал работать поддомен. Я перенёс на них только поддомен. Видимо они решили что я их услугами не пользуюсь. Сайт остался без изображений и видео.

                    0

                    Спасибо за дополнение. У меня с cloudflare пока проблем не было, но это определенно повод задуматься

                      +1
                      Треть из заблокированных Роскомнадзором IP-адресов принадлежат Cloudflare.
                      0
                      Всё просто. Владей своим сервисом сам. Точка.
                        0
                        Оркестрация рулит, имхо
                        +1
                        Думаю, со временем эта проблема уйдёт в прошлое по мере того, как станет возрастать употребление P2P-распределённой файловой системы IPFS, которая одновременно сыграет роль CDN (причём такой CDN, в которой узлы доставки — сами пользователи) и роль хостинга статических (неизменных) файлов (например, библиотечных джаваскриптов определённой версии). Достаточно браузеру одного китайца преодолеть Стену для того, чтобы скрипт разошёлся по всей Поднебесной.
                          0

                          О, это было бы очень здорово, мне даже сложно представить, сколько новых интересных проблем и решений, это нам принесет.

                            0

                            Расскажите этим людям о Tger Tree Hash. Вместо Tiger хеша можно использовать тот же Sha256 будет Sha256 Tree Hash. И не надо изменять исходный файл для того чтоб не плодить тучи новых хешей которые можно использовать только внутри IPFS.


                            Преимущества Tree Hash в том что файл можно делить на любые блоки (1024 байта * 2x) и он самопроверяемый.


                            В таком случае если человек получит файл по ссылке не имея клиента IPFS сможет проверить что файл соответствует хешу в ней.


                            Кстати формат блока я так и не увидел в документации.

                              0
                              Мне например всегда было интересно, почему в браузеры не встроят самые популярные JS библиотеки, от этого их дистрибутив не намного вырастет.
                                0

                                Встраивается и стандартизируется некоторый функционал из них. А так можно плагин сделать который будет перехватывать запрос на загрузку и отдавать из локального хранилища.

                                  0

                                  Мало было и есть проблем с поддержкой стандартов HTML, CSS и JS среди разных браузеров разных версий, давайте добавим проблемы с поддержкой нестандартных библиотек! Плюс, тогда нужен будет некий менеджер пакетов для этих библиотек, встроенный в сам браузер, который тоже должен быть стандартным для всех браузеров. А уж с версионированием библиотек вообще веселуха начнётся.

                                0
                                Я так понимаю GitHub Pages в качестве CDN тоже лучше не использовать?
                                  0

                                  Не знаю, но gist.github.com в Китае почему-то заблокирован

                                    0
                                    Потому что у них есть свой Александр Жаров.
                                    И таки да, Github Pages и gist.github.com используют разные IP адреса.
                                    Попробуйте проверить Github Pages на следующем IP 151.101.12.133 (один из адресов Github Pages).
                                      0

                                      github pages не заблокированы — это точно


                                      Только gist

                                  +1
                                  Но у меня же нет клиентов в Китае

                                  Кто катался в Крым, мог почувствовать себя в Китае — оттуда часть гугловских ресурсов недоступна. Потому, на некоторых сайтах проблемы. Например недоступно то, что работает на Google App Engine
                                  VPN как решение проблемы

                                  Бесплатный VPN в Opera пока сейчас работает быстро.
                                    0

                                    Не знал про Крым — отличный аргумент, кстати.


                                    VPN сам по себе может быть и быстрым и медленным, зависит от того, как быстро вы до него доходите. Так как сервера VPN вне Китая, а межд. интернет бывает очень медленным временами, то это и создает основные проблемы.

                                      +1
                                      Вот так это выглядит в самом тяжелом случае
                                      image
                                    0

                                    Хоть статья и капитанская, но спасибо! Я теперь задумался о смене Google CDN на что-то другое.


                                    Ну просто...

                                    … просто у нас крупнейший портал в Сахалинской области, и много "наших" людей ездят в Китай в отпуск или по работе, и при этом продолжают заходит на наш ресурс.
                                    А начали использовать тот же jQuery с Google CDN по одной просто причине — мы живём на острове, и с интернетами у нас полная беда, и для того, чтобы хоть как-то сэкономить ресурсы нашего канала "на внешку" (за пределы Сахалина) и для ускорения загрузки страниц у клиентов, мы для этой самой "внешки" отдаём ресурсы с различных CDN (Google, Yandex, CloudFront).

                                      0
                                      Можно использовать Amazon Web Services (AWS), Microsoft Azure или Digital Ocean в качестве CDN или же хостинга для всего ресурса.
                                      0
                                      А у меня на работе сервисы гугла не работают. Не знаю какой «одарённый» админ это сделал. Так что зайти через OAuth2 никак не получается на сайты.
                                        0
                                        Политика безопасности в некоторых организациях сильно «доставляет» ;)
                                        У нас почему-то на работе не работает market.yandex.ru, какой из сотен фильтров его блокирует нашему админу не понятно. Тот же youtube не открывается, а если кликнуть ссылку на youtube в поисковой выдаче гугла youtube открывается :) в общем че-то мне не нравится этот kerio winroute firewall

                                      Only users with full accounts can post comments. Log in, please.