Как объект JavaScript Image взаимодействует с кешем браузера? - PullRequest
3 голосов
/ 22 сентября 2011

Поэтому я использую простые объекты, чтобы обернуть объекты Image и отслеживать их загрузку, например:

var preloader = {
    loaded: false,
    image: new Image()
}
preloader.image.onload = function() {
    preloader.loaded = true;
}
preloader.image.src = 'http://www.example.com/image.jpg';

Когда загрузка изображения завершена, preloader.loaded устанавливается в значение true.Все это прекрасно работает.

Мой вопрос: что произойдет, когда у меня будет так много таких объектов и так много изображений, что кеш браузера израсходован?В конце концов, как только будет загружено достаточное количество изображений, браузер начнет выгружать старые файлы из кэша.В этом случае я не буду в конечном итоге с объектами JavaScript, где загружен = true, но файл изображения на самом деле больше не кэшируется?

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

Ответы [ 2 ]

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

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

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

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

Вчера я удалил 800 МБ интернет-кеша, который накопился за последние несколько месяцев. Короче говоря, я не думаю, что возможно исчерпать кеш браузера, если у пользователя нет действительно старой машины, или вы предварительно загружаете слишком много изображений.

...