Как ускорить веб-сайт, где большинство ресурсов страницы уже кэшируется браузером - PullRequest
1 голос
/ 06 февраля 2009

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

Поскольку почти все запросы страниц поступают от пользователей, которые уже использовали сайт, изображения, CSS и внешние ресурсы javascript будут кэшироваться браузером во время предыдущих запросов. Поскольку браузеру не нужно запрашивать эти ресурсы снова, я прав, что следующие советы по производительности не будут давать мне какие-либо улучшения в скорости отклика?:

  • CSS спрайтов
  • параллельная загрузка изображений с использованием альтернативных доменных имен
  • размещение Javascript включает в себя в нижней части страницы

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

Ответы [ 4 ]

2 голосов
/ 06 февраля 2009

Это хороший ресурс для ускорения веб-приложений: Yahoo: лучшие практики для ускорения вашего сайта

Чтобы извлечь выгоду из кэширования на стороне клиента, обязательно отправьте заголовки «Expires» и «Cache-Control», как описано в этих рекомендациях.

1 голос
/ 06 февраля 2009

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

В этом случае я могу предложить несколько вещей. Сначала уменьшите количество HTTP-запросов к серверу. Это значит:

  1. Если клиент хочет добраться до «Одежда> Мужчины> Обувь», используйте всплывающее меню, чтобы помочь им быстрее добраться туда (если, конечно, вы не хотите проложить живописный маршрут).
  2. Загрузить все в одном и том же HTTP-запросе (одноразовое нажатие для повторяющихся пользователей), а затем пользователя JS, чтобы скрыть / отобразить информацию по требованию.

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

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

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

0 голосов
/ 06 февраля 2009

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

0 голосов
/ 06 февраля 2009

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

Затем проверьте содержимое, которое извлекается при каждом запросе. Если ваш HTML / CSS / Javascript излишне многословен, значит, нужно отправлять больше данных и обрабатывать больше данных для клиента.

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

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