Как последовательно обслуживать активы с одного хоста CDN? - PullRequest
0 голосов
/ 11 августа 2010

Итак, чтобы ускорить время загрузки, мы настраиваем кучу имен хостов CDN для обслуживания образов и ресурсов. Каков наилучший способ последовательно использовать один и тот же хост для одного и того же ресурса? Например. button.gif всегда обслуживается с http://assets -15.ourserver.com .

Я думал о том, чтобы придумать какое-то правило, в котором хэш md5 имени файла каким-то образом отображается на сервере (не может использовать само имя файла, поскольку многие из них похожи: "button-home.gif", "button -about.gif "и т. д.). Я не уверен, что это самый эффективный способ, но похоже, что он сработает.

Кто-нибудь имеет опыт работы с подобными вещами? Мне нужно решение, не зависящее от языка, потому что оно будет использоваться несколькими разными языками.

РЕДАКТИРОВАТЬ: Объяснение Yahoo о том, как это ускоряет вещи: http://developer.yahoo.com/performance/rules.html#split

Ответы [ 2 ]

1 голос
/ 11 августа 2010

Когда я делал что-то подобное, все соответствующие ресурсы в любом случае имели идентификационные номера, поэтому я просто использовал это в качестве основы.Тем не менее, это не слишком сложно распространить на нечисловые числа.

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

Это само по себе означает, что простой хеш, скорее всего, будет достаточно легко разделяться на заданный диапазон без какой-либо особой необходимости.

Неткодирование приводит к путанице, потому что либо ваше приложение имеет дело с IURI полностью (в этом случае обработка utf-8 уже является проблемой, с которой вы столкнулись), либо нет, и в этом случае каждый символ в UR-экранированной форме пути(то есть имя, используемое в фактическом URI) будет находиться в диапазоне ASCII.

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

Следовательно, просто пробегая символы в абсолютномпуть к URI для изображения (все после хоста, начиная с первого и далее), добавляя их целочисленные значения друг к другу, а затем используйте модуль этой части имени хоста.

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

То, что "button-home.gif" похоже на "button-about.gif" isnЭто не проблема, так как они на самом деле не очень похожи, как видно на примере такого процесса.

Если вы когда-либо увеличите количество используемых имен хостов, попробуйте сделать это кратнымпредыдущее число, так как это приводит к тому, что максимальное количество ресурсов сохраняет свои старые URI.

1 голос
/ 11 августа 2010

Цель сети доставки контента (CDN) - загрузить ресурс с сервера, ближайшего к пользователю.

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

...