2009-12-18 2 views
3

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

Интерактивное изображение вещь, расположен по адресу:

southernwindowdesign.com 

Он использует 5 изображений для пошагового каждого состояния (путем нажатия и перетаскивания). Я хочу, чтобы изображения были качественными; поэтому любое дальнейшее сжатие jpeg отсутствует (включая punypng и smush.it).

Любые идеи для сокращения времени загрузки? Я готов рискнуть использовать данные URI, холст, PNG compression (cool) и т. Д.

Любые идеи или указатели на всех будут полезны.

ОБНОВЛЕНИЕ: Спасибо всем, кто дал совет, если бы я использовал совет, который вы дали, я дал вам один плюс. Я установил еще один статический субдомен (s2), который должен распространяться в течение следующих нескольких часов или около того. Позже сегодня я, вероятно, переключу некоторые изображения на этот новый поддомен. Я также изменил загрузку изображений заказа и сделал некоторые другие оптимизации здесь и там.

Я надеялся, что кто-то знает, как использовать избыточные пиксели в каждом изображении. Есть ли способ кодировать все изображения в один файл и читать их с помощью getImageData() в javascript's canvas в некотором умном ключе?

Я пробовал подход getImageData на http://www.eswd.com/southern/test.jpg, который из-за потери без потерь jpeg (Quality = 100! = 100%), приходит с этим: http://www.eswd.com/southern/test.aspx. что нехорошо. Сохранение изображения в виде PNG с использованием того же метода привело к большему размеру файла, чем jpeg со всеми данными (без красной границы).

Я рассматриваю возможность работать с .APNG и считывать данные в пикселях таким образом ... но поскольку формат так рано развивается, похоже, что он вообще не уменьшит размер файла. . И я не уверен, что холст позволит мне читать отдельные кадры PNG в анимации.

+2

FWIW, я знаю, что вы говорите, что дальнейшее сжатие отсутствует ... но я действительно думаю, что ваши jpg намного больше, чем они должны быть. Я смог сэкономить почти 370 тыс. С step1.jpg один без заметной разницы. (Photoshop CS2, save-to-web 60%, хорошие глаза, гамма-калибровка, окружающее освещение и т. Д.). Я уверен, что вы можете многое снести с других изображений. Это всего лишь много данных для толчка. – zen

+0

Я согласен с zen - первое изображение (541kb) заняло 3 секунды для загрузки. – Annie

ответ

7

Загрузка всей страницы составляет 40 запросов HTTP, в том числе около 20 запросов изображений для логотипов и т. Д., Которые загружают перед вашей дверью скользящие изображения. Спрайте эти другие 20 изображений. Затем изображения с закрытием двери не загружаются до тех пор, пока не загрузится main.js. Этот файл только 1 кб - вы, вероятно, не получаете большую выгоду от его кеширования. Я думаю, вы должны попробовать вставить этот скрипт на странице, чтобы он мог быстрее загружать скользящие изображения.

Вы должны использовать инструмент, например, панель Firebug net или HttpWatch, которая позволяет вам увидеть график загрузки ресурсов для оптимизации запросов, чтобы как можно скорее загрузились скользящие изображения дверей. Прочитайте this post on the Firebug net panel, чтобы убедиться, что вы используете версии, которые дают вам наиболее точное время.

+0

Эти логотипы используются в другом месте на сайте, поэтому они разделены. Я задержу загрузку тех, которые вы не можете на pageload. –

+0

Не имеет значения, используются ли логотипы в другом месте. Если вы загрузите «другие 20 изображений» в качестве спрайта, его кешируйте, повторно используйте по всему сайту по своему усмотрению. – Erik

0

Я искал несколько оптимизаций изображения для применения, но единственное, что соответствует вашим требованиям, - это изображение базовых дверей, http://s.southernwindowdesign.com/i/home/animateDoor2/step1.jpg Обратите внимание, что нижняя полоса закрыта на веб-странице. Это может быть обрезано. Однако это не спасет больше нескольких байтов.

1

Есть много, что вы можете сделать.

Для меня сам HTML занимает около 7 секунд для загрузки в первый раз - около половины общего времени.

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

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

Одна незначительная вещь: вы можете удалить метатег для файла .ico. Как это сейчас, это одно из первых загруженных изображений; это не приоритет, поэтому он может подождать.

Кроме того, загружаемый анимированный gif загружается после step1.jpg на step5.jpg. Если вам это действительно нужно, вы должны сначала загрузить его.

В случае, если это помогает, я написал целую главу в моей книге об этих типах оптимизации, в том числе о том, как контролировать порядок загрузки изображений и т. Д .: Ultra-Fast ASP.NET.

+1

HTML загружен 7 секунд для загрузки? Это всего лишь 6 килобайт, и для меня это заняло всего 147 мс, поэтому я не думаю, что проблема с сервером. – Annie

+0

Может быть, DNS? Во второй раз, в IE вместо FF, это было намного быстрее, хотя мой интернет-провайдер использует прозрачный прокси-сервер, поэтому может быть и поэтому. Просто сделал несколько cntl-refreshes сейчас, и он варьируется от 0,5 до 2 секунд в IE. Я использую линию DSL 11 Мбит/с в Новой Зеландии. BTW, ваш контент сжимается с дефлятом вместо gzip: не видел этого в течение долгого времени! – RickNZ

+0

Звучит как хорошие подсказки. Я избавился от загружаемого изображения и значка (он был png, который был у meta). Я использую deflate из-за этого сообщения: http://stackoverflow.com/questions/1574168/gzip-vs-deflate-zlib-revisited –

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