количество изображений на сайте вызывает длительное время загрузки - PullRequest
6 голосов
/ 20 февраля 2010

Мой сайт иногда загружается немного медленно из-за количества загружаемых изображений. У меня на самом деле есть 61 изображение на моей домашней странице из-за всех наложений и значков png. Я подумал об использовании спрайтов или карты изображений, но я действительно не хочу этого делать. Я знаю, что на мой сервер может быть только 2 запроса, поэтому, если я размещу изображения в другом месте, это ускорит время, но это надежно? Инструменты Pingdom сообщили, что у моего сайта превышено время ожидания. Я ищу решение, которое будет либо:

A) Распространение моих изображений на разных серверах (но недостатком является то, что я хочу получить их на надежном (моем!) Сервере

B) Использование только нескольких спрайтов изображений или другой техники CSS

С) ??? Есть идеи?

Заранее спасибо.

Обновление 1: Я создал 6 поддоменов и разделил все свои изображения среди этих поддоменов. Вы можете видеть обычный сайт со всеми изображениями, размещенными в одной папке здесь , и вы можете видеть тот же сайт с изображениями в 6 поддоменах здесь . ** Как вы можете видеть, сайт с изображениями в разных поддоменах загружается ОЧЕНЬ медленнее. Это почему? Я не понимаю!

Обновление 2: Я позвонил в свою хостинговую компанию, и они, похоже, думают, что решение субдомена не решит проблему, а только замедлит ее, поскольку каждый субдомен не имеет уникальных IP-адресов. Мой сервер испытывал высокую нагрузку, поэтому это объясняет некоторую задержку, но проблема с изображением сохраняется. Он сказал, что лучше всего использовать сервис Amazon, поэтому сейчас я собираюсь исследовать его.

У меня все еще есть проблемы с пониманием - это задержка в определенных файлах изображений. Если вы посмотрите на результаты загрузки страницы в Firebug (см. Ответ BalusC ниже), у вас будет значительное время ожидания для загрузки определенных изображений. Интересно почему.

Ответы [ 5 ]

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

Одна из лучших статей, которые я читал на эту тему:

Оптимизация времени загрузки страницы

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

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

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

Согласно вашему обновлению:

Я создал 6 поддоменов и разделил все свои изображения среди этих поддоменов. Здесь вы можете видеть обычный сайт со всеми изображениями, размещенными в одной папке, а также тот же сайт с изображениями в 6 поддоменах.

Как вы можете видеть, сайт с изображениями в субдоменах загружается ОЧЕНЬ медленнее. Это почему? Я не понимаю!

Я проверил сетевую панель из Firebug :

Это был "нормальный" сайт:

alt text
( полное изображение здесь )

Это был "улучшенный" сайт:

alt text
( полное изображение здесь )

Это заметно лучше (гораздо больше одновременных запросов), но было много больших зеленых полос для «Соединения» (около 9 секунд), браузер ждет соединения с сервером. Таким образом, проблема больше в сервере. Похоже, что что-то не так с Keep-Alive и что сервер Apache HTTPD настроен на KeepAliveTimeout 10 или около того. Попробуйте , чтобы отключить Keep-Alive для этих виртуальных хостов KeepAlive off и посмотрите, что произойдет.

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

Amazon предлагает услуги CDN: http://aws.amazon.com/cloudfront/ Вы можете размещать изображения там и платить только за используемую пропускную способность. Amazon AWS традиционно достаточно надежен. Вы можете назвать дополнительные субдомены, чтобы обойти ограничение HTTP 1.1 2, как упоминает @dusoft.

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

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

субдомены могут иметь (физические) символические ссылки на один и тот же каталог images /

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

У Google есть инструмент под названием Скорость страницы . Из их описания:

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

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

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

...