2010-02-19 3 views
3

Я в настоящее время в процессе улучшения моих Grails сайт производительность и после многих лучших практик, которые я нашел в Интернете, я в настоящее время необходимо принять решение между двумя решениями, прежде чем рефакторинга мой кодСтоит ли иметь статические ресурсы в отдельном домене/сервере?

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

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

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

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

спасибо.

ответ

1

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

+1

+1: Согласовано, звучит как преждевременная оптимизация. –

+0

Я уже определил, что загрузка моих статических ресурсов является узким местом. Тем не менее, какое решение вы консультируете и почему? – fabien7474

+1

@OMG Ponies: Это действительно не преждевременная оптимизация! Во-первых, если я делаю оптимизацию, это потому, что я уже определил необходимость в этом. Во-вторых, ознакомьтесь с этой статьей (http://www.yuiblog.com/blog/2006/11/28/performance-research-part-1/), и вы узнаете, что первым шагом для оптимизации является сокращение HTTP потому что 40% ваших пользователей являются первыми пользователями и не используют кеш браузера. Таким образом, вы должны иметь дело со своим статическим контентом, который может быть оптимизирован и в комплекте – fabien7474

1

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

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

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

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

0

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

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

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

+0

Привет, Джеффри. Я не уверен, что увеличение количества CNAME всегда ускорит скорость вашей страницы. На самом деле, из того, что я прочитал, требуется не менее 2 доменных имен до 4 имен доменов. После того, как вы получите значительное снижение производительности. См. Эту статью для получения дополнительной информации: http://www.yuiblog.com/blog/2007/04/11/performance-research-part-4/ – fabien7474

1

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

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

Смежные вопросы