Как мне кодировать мою страницу ASP.NET для распараллеливания загрузок по именам хостов? - PullRequest
1 голос
/ 06 сентября 2010

Google Page Speed ​​ test говорит мне, что мне нужно распределить свои запросы по доменным именам DNS для ускорения рендеринга.

Поскольку я занимаюсь разработкой в ​​автономном режиме, я хотел бы найти решение, которое будет распределять мой статический контент (img, CSS, js) по разным именам хостов и все равно будет работать, когда я не в самолете.

Q: Как я могу кодировать свою страницу, чтобы использовать относительные пути (или локальный хост) в автономном режиме и последовательно отправлять запросы статического контента между 5 хостами? После прочтения this я бы хотел, чтобы URL был похож на это:

При подключении к Интернету: динамическое содержимое
www.TLSAdmin.com

Когда онлайн: Статическое содержимое
static1.TLSAdmin-Static.com
static2.TLSAdmin-Static.com
static3.TLSAdmin-Static.com
static4.TLSAdmin-Static.com

В автономном режиме: все содержимое
локальный

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

1 Ответ

1 голос
/ 06 сентября 2010

Как насчет этого:

1) Кодируйте все ссылки на статические ресурсы, например, [HOSTNAME] /Images/myimage.jpg
2) Создайте либо модуль HTTP, либо базовый классдля ваших страниц, в которых реализован фильтр ответов.
3) Этот фильтр должен использовать регулярное выражение, чтобы найти все экземпляры [HOSTNAME] и заменить его на альтернативный.

Фильтр может включать логику, чтобы проверить, является ли текущее имя хоста localhost, а затем просто вставить localhost в качестве имени хоста.Чтобы рандомизировать распределение других имен хостов, сохраняя кешируемость, вы можете сделать следующее:

1) Иметь список альтернативных имен хостов
2) Вам понадобится более сложное регулярное выражение / синтаксис для поиска [HOSTNAME], а также найдите имя файла
3) Создайте хэш полного пути к файлу.Это может быть очень просто, например, подсчет кодов ascii каждого символа в пути и поиск модуля # имен хостов
4) Используйте значение хеша, чтобы выбрать имя хоста из списка.

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

...