У меня есть ASP.NET MVC3 сайт, который использует пару jQuery плагинов (jqGrid и jqPlot). Я заметил время от времени, особенно когда я разрабатываю новые страницы с новым CSS, что изображения медленно загружаются; иногда требуется больше минуты, чтобы появиться.
В jqGrid я в первую очередь замечаю это значками подкачки, которые исходят из спрайта jQuery UI (images/ui-icons_6da8d5_256x240.png
).
В jqPlot я замечаю это на пользовательских меток точек, которые используют класс CSS с фоном изображения (url(/Content/images/gray_block.png)
).
В обоих случаях пути к изображениям действительны, но по какой-то причине они очень медленно появляются. Кто-нибудь еще сталкивался с подобной проблемой?
Предварительная загрузка изображений устранила проблему. Я использовал решение здесь.
<script type="text/javascript">
$.fn.preload = function () {
this.each(function () {
$('<img/>')[0].src = this;
});
}
</script>
// pre-cache icons
$(['@Url.Content("~/Content/images/orange_block.png")',
'@Url.Content("~/Content/images/yellow_block.png")',
'@Url.Content("~/Content/images/red_block.png")',
'@Url.Content("~/Content/images/gray_block.png")',
'@Url.Content("~/Content/themes/custom-theme/images/ui-icons_217bc0_256x240.png")'
]).preload();
CSS3
для дизайна и для фона я обрезать изображение 1x1px