Использование одного и того же кэша с разных статических серверов - PullRequest
1 голос
/ 26 июля 2010

Я подумываю добавить еще один статический сервер в веб-приложение, поэтому у меня есть static1.domain.tld и static2.domain.tld.

Смысл в том, чтобы использовать разные домены для более быстрой загрузки статического контента (больше параллельных соединений одновременно), но меня «беспокоит» то, как заставить браузер пользователя видеть static1.domain.tld/images/whatever.jpg и static2.domain.tld/images/whatever.jpg как тот же файл "?

Есть ли хитрость для достижения этой цели с помощью заголовков, или мне придется определить, какой файл находится на каком сервере?

Ответы [ 3 ]

2 голосов
/ 26 июля 2010

Нет, нельзя сказать браузеру, что два URL одинаковы - браузер кэширует по полному URL.

Что вы можете сделать, это убедиться, что вы всегда используете один и тот же URL для одного и того же изображения. То есть. все изображения, которые начинаются с AM, идут на сервер 1, NZ - на сервер 2. Для реальной реализации я бы использовал хеш, основанный на имени или что-то в этом роде, но, вероятно, есть библиотеки, которые делают такие вещи для вас.

1 голос
/ 26 июля 2010

Вы должны иметь оба сервера, способных отвечать на запросы, отправленные на static.domain.tld.Я видел несколько способов достижения этого, но все они довольно низкого уровня.Два из них мне известны:

  • Использование циклического перебора DNS, чтобы сопоставление имен хостов с IP-адресами со временем менялось;очень большие веб-сайты часто используют эти варианты, так что контент фактически подается из CDN ближе к клиенту.
  • Используйте конфигурацию взломанного маршрутизатора, чтобы на IP-адрес отвечали несколько машин (с разными MAC-адресами);на практике это очень эффективно, но требует, чтобы машины были физически близки.

Вы также можете выполнять разнесение на «видимом» уровне, направляя на разные серверы на основе чего-то, что также можетбыть случайным (например, конкретный бит из MD5-хэша пути).И, что лучше всего, все эти методы используют независимые части программного стека для работы;Вы можете использовать их в любой комбинации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...