Когда и когда не следует использовать CDN

13

Я работаю над веб-приложением, которое загружает пару маленьких картинок GIF на экран. Я использую относительный путь, который означает, что они загружаются с того же веб-сервера, который обслуживает страницу php. Операция происходит мгновенно, и я на другом континенте, чем веб-сервер.

Я только что проверил сеть CDN для этого (Cloudfront), думая, что перемещение статических файлов ближе к пользователю - отличная идея. Однако все эти файлы теперь отображаются на экране примерно за полсекунды. Конечно, теперь я должен использовать абсолютный путь (https://xyzvf.cloufront.net/images/)

Это почему? Является ли абсолютный путь проблемой? Я сокращаю HTTP-запросы к своему собственному серверу, что хорошо, но эта задержка раздражает. Разве CDN не подходит для этого?


источник
4
Это в значительной степени зависит от того, где находится CDN. Если у вас много маленьких изображений, можно ли объединить их в спрайт? Это будет означать только один запрос на загрузку всех изображений.
У них есть эти местоположения: michaelgaigg.com/blog/images/amazon-cloudfront.jpg Я нахожусь в Европе, и загрузка изображений с моего веб-сервера в США происходит быстрее, чем загрузка из Германии или любого другого европейского местоположения, из которого служит мне Amazon. А может проблема не в времени загрузки, а в чем-то еще? Использование спрайта - отличная идея, спасибо.
Вы также можете использовать URL-адрес без имени протокола с именем хоста, например "//xyzf.cloudfront.net/images". Это позволяет использовать кэши ISP и корпоративного прокси для кэширования версий образов, отличных от SSL. Это может иметь огромное преимущество как для вашего опыта посетителей, так и для загрузки сервера / полосы пропускания. Посетители нашего сайта - почти все из американских финансовых учреждений, и мы обнаруживаем, что около 85% посещений происходят из-за некоторой формы кэширования прокси. YMMV, так что, конечно, протестируйте свой сайт и трафик.
rmalayter

Ответы:

6

Проблемой может быть DNS или keep-alive- то есть браузер уже имеет IP-адрес для вашего сервера и имеет открытое соединение с ним, в то время как он должен разрешить имя сервера CDN и затем открыть новое соединение там, и один из них или оба представляют собой задержку, которую вы видите.

Спрайт, хотя все еще хорошая идея, не помог бы этим проблемам. Действительно, решение не приходит на ум. Единственное утешение заключается в том, что задержка в полсекунды не будет намного больше, если у вас будет тысяча изображений (и файлов CSS, JS и любых других статических файлов, которые вам нужны) и не создаст больше нагрузки на исходный сервер, если еще тысячи пользователей попали в нее.

Malvolio
источник
Это звонит в колокол. Я должен упомянуть, что первый вызов к серверу CDN сделан, когда первое изображение необходимо, как в середине страницы.
Ах, тогда вы можете получить лучшую (воспринимаемую) производительность, если вы сделали ссылку, любую ссылку на CDN в самом начале страницы. Наилучшим способом может быть размещение ваших CSS-файлов в CDN и размещение linkтегов в headразделе, чтобы процесс подключения начался сразу же.