Стоит ли иметь статические ресурсы в отдельном домене / сервере? - PullRequest
3 голосов
/ 20 февраля 2010

В настоящее время я занимаюсь улучшением моего grails веб-сайта производительности и, следуя множеству лучших рекомендаций, которые я нашел в Интернете, в настоящее время мне нужно принять решение между двумя решениями перед рефакторингом мой код

  • Решение 1 : экспортировать все мои статические ресурсы (js, css, images) в отдельный домен и сервер (как уже сделано командой SO - см. здесь ).

  • Решение 2 : Просто сохраните мои ресурсы в моем файле WAR и настройте apache в в качестве обратного / кэширующего прокси , чтобы входящие запросы в / images, / css, / js и т. д. все кэшируются apache.

Что вы рекомендуете и каковы плюсы и минусы ?

PS: Что касается решения 1, есть ли провайдеры веб-хостинга, специализирующиеся на статическом контенте?

Спасибо.

Ответы [ 4 ]

1 голос
/ 20 февраля 2010

Если вы еще не используете его, я бы посмотрел на плагин ui-performance grails . В нем реализовано множество передовых практик в области кэширования, минимизации и сжатия данных прямо из коробки.

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

1 голос
/ 20 февраля 2010

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

Обычно браузер загружает ресурсы страницы параллельно. Однако браузер ограничит количество запросов конкретным доменом, поэтому, если все ваши ресурсы находятся в этом домене, некоторые из них будут блокироваться до завершения предыдущего параллельного запроса. Разделение ваших ресурсов на разные домены облегчает это конкретное узкое место, поскольку у вас может быть несколько запросов, идущих к images.yourdomain.com и flash.yourdomain.com одновременно. Создание приложения для использования этого стиля разделения ресурсов с самого начала может оказаться полезным, даже если вы изначально обслуживаете их все с одного сервера.

Вы можете реализовать все Решение 2 как часть Решения 1, т.е. иметь кеширование на нескольких доменах. Обычно дешевле начинать с №2, поскольку вы можете продолжать обслуживание с существующих серверов, но настроить их для кэширования.

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

1 голос
/ 20 февраля 2010

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

0 голосов
/ 20 февраля 2010

Это зависит от того, сколько ресурсов требуется вашей странице / страницам. Помните, что браузеры могут устанавливать только ограниченное количество соединений с одного сервера одновременно. Для IE 8 это 2 одновременно. Если у вас есть 40 ресурсов, вы можете получить их только 2 одновременно. Распределение ресурсов между несколькими поддоменами может значительно увеличить скорость загрузки страниц на вашем сайте.

Вы можете настроить несколько записей CNAME в DNS, все они указывают на один и тот же физический сервер и значительно увеличить скорость загрузки ресурсов.

Также ознакомьтесь с Google PageSpeed ​​для получения дополнительных идей по ускорению загрузки страниц.

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