Как работает Yahoo! Поиск картинок загрузить свои изображения? - PullRequest
2 голосов
/ 17 сентября 2011

Я только недавно заметил, что при нажатии на изображение в Yahoo! Поиск изображений сначала показывает изображение с низким разрешением, которое затем постепенно превращается в изображение с высоким разрешением.

Пример: Yahoo! Поиск картинок

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

Кроме того, может кто-нибудь указать мне, как это на самом деле делается (желательно с помощью JQuery, в случае, если они используют JavaScript для этого)?

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

Они используют кэш миниатюр с этого URL

http://ts1.mm.bing.net/images/thumbnail.aspx?q=NUM&id=HASH

, где HASH и NUM (как-то) являются ссылками на определенный эскиз.

Например,NUM = 1148286928700 и HASH = d2f4bbf91a853cefbc18794b6eb9ecdd являются ссылкой на этот эскиз .

Конечно, миниатюры имеют меньший размер файла, чем большие изображения, поэтому Yahoo!сначала загружается из кэша миниатюр, чтобы дать пользователю представление о том, что изображение, и загружает полноразмерное изображение в фоновом режиме.

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

Давайте предположим, что уменьшенное изображение загружено в тег img с идентификатором main_image и наше полноразмерное изображение загружается (в фоновом режиме) в скрытый тег img с идентификатором secondary_image.Затем мы связываемся с событием load #secondary_image и заменяем src из #main_image при загрузке:

$('#secondary_image').load(function() {
  // on big image load, replace the src of the thumbnail image
  $('#main_image').attr('src', $(this).attr('src'));
}

Затем, когда пользователь желает просмотреть другое изображение, мы заменяем src из #main_image с другой кэшированной миниатюрой, замените src из #secondary_image большим изображением и снова свяжите событие load (так что в идеале вы должны создать функцию с приведенным выше кодом и вызватьэта функция всякий раз, когда вы меняли #secondary_image src.

1 голос
/ 17 сентября 2011

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

Интересно отметить, что большие пальцы предоставлены Bing.

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