Предварительная загрузка изображений javascript - проверьте, кэшировано ли / загружено ли изображение для предотвращения предварительной загрузки - PullRequest
4 голосов
/ 14 октября 2010

У меня есть несколько сомнений, в которых я уже уверен, но все же хочу быть очень точным в этом.

Если это дублирующий вопрос, пожалуйста, дайте мне ссылки, чтобы я удалил этот вопрос и сослался на предоставленные ссылки

  1. Мне нужно предварительно загрузить несколько изображений. Я не хочу предварительно загружать, если они уже существуют в кэше браузера.

  2. если мы выполняем предварительную загрузку, то для предварительной загрузки мы используем код JavaScript, который отправляет запрос. также у нас есть img src для того же изображения в HTML-документе. Будет ли браузер запрашивать изображение два раза. один во время предварительной загрузки и другой, когда он видит тег img?

  3. Я надеюсь, что процессы предварительной загрузки и img src являются асинхронными. Я надеюсь, что ресурс и запрос, взятые при связывании изображения, например, obj.src = path, будут такими же.

  4. Я надеюсь, что предварительная загрузка не будет работать как синхронный Ajax. то есть отдавая приоритет

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

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

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

Спасибо.

Ответы [ 2 ]

3 голосов
/ 14 октября 2010
var preloadImgs = function(){
    var current, image_urls = ['image_one.jpg', 'image_two.jpg', 'image_three.jpg'], i, imgObj = new Image;

    for (i = 0; i < image_urls.length; i += 1) {
        current = (imgObj.src = image_urls[i]);
        if (current.complete) { // image is cached/loaded
          // do something with the cached/loaded image
        }
    }
};

"Мне нужно предварительно загрузить несколько изображений. Я не хочу предварительно загружать, если они уже существуют в кэше браузера". Неважно, предварительная загрузка задает url для свойства src объекта изображения, а делает все остальное, если изображение уже доступно, запрашивается следующее изображение.

3 голосов
/ 14 октября 2010

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

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

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

Относительно ссылок: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

...