Я заметил что-то странное в отношении аякса и загрузки изображений. Предположим, у вас есть изображение на странице, и ajax запрашивает одно и то же изображение - можно было бы предположить, что запросы ajax попадут в кеш браузера, или он должен хотя бы сделать только один запрос, результирующее изображение перейдет на страницу и script который хочет читать/обрабатывать изображение.
Удивительно, но я обнаружил, что даже когда javascript ожидает загрузки всей страницы, запрос на изображение все еще делает новый запрос! Является ли это известной ошибкой в Firefox и Chrome, или что-то плохое jQuery ajax делает?
Здесь вы можете увидеть проблему, откройте Fiddler или Wireshark и установите ее для записи, прежде чем нажать "запустить":
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<div id="something" style="background-image:url(http://jsfiddle.net/img/logo-white.png);">Hello</div>
<script>
jQuery(function($) {
$(window).load(function() {
$.get('http://jsfiddle.net/img/logo-white.png');
})
});
</script>
Обратите внимание, что в Firefox он выполняет два запроса, оба приводят к 200-OK, и отправляет все изображение обратно в браузер дважды. В Chromium он, по крайней мере, правильно получает 304 по второму запросу, а не дважды загружает содержимое.
Как ни странно, IE11 загружает весь образ дважды, в то время как IE9 агрессивно кэширует его и загружает его один раз.
В идеале я бы надеялся, что ajax вообще не сделает второй запрос, так как он запрашивает точно такой же URL-адрес. Есть ли причина, по которой css и ajax в этом случае обычно имеют разные кеши, как будто браузер использует различное хранилище кеша для запросов css vs ajax?