我目前正在通过它们加载不同断点(桌面,平板电脑,手机)和ng-repeating
的多个图像,然后隐藏当前不应显示的图像:在浏览器缓存中存储图像 - 加载图像的最佳方式
<img ng-repeat="img in module.imgs" src="{{img.src}}" class="image-{{img.type}}" style="top: {{img.pos}}px">
这个ng-repeat
会导致所有三个图像元素被加载为一次只显示一个元素的元素。
desktop.png GET 304 png angular.js:3151 243 B 4 ms
tablet.png GET 304 png angular.js:3151 243 B 5 ms
mobile.png GET 304 png angular.js:3151 243 B 3 ms
为了改善这一点,我想只加载符合当前断点图像:
<img src="{{image.src}}" class="image-{{image.type}}" style="top: {{image.pos}}px">
$scope.$watch($scope.getWindowDimensions, function (newValue, oldValue) {
$scope.windowHeight = newValue.h;
$scope.windowWidth = newValue.w;
$scope.image = null;
if ($scope.windowWidth >= breakPoints['desk']) {
$scope.image = $scope.module.imgs[0];
} else if ($scope.windowWidth >= breakPoints['mid']) {
$scope.image = $scope.module.imgs[1];
} else {
$scope.image = $scope.module.imgs[2];
}
}, true);
不幸的是,每次我遇到断点时,它要求即使他们已经加载图像:
desktop.png GET 304 png angular.js:3151 243 B 4 ms
tablet.png GET 304 png angular.js:3151 243 B 5 ms
mobile.png GET 304 png angular.js:3151 243 B 3 ms
tablet.png GET 304 png angular.js:3151 243 B 4 ms
mobile.png GET 304 png angular.js:3151 243 B 5 ms
如何缓存或以其他方式存储这些图像,以便它们按需加载一次?
控制器数据结构:
$scope.module = {
imgs: [
{
type: 'desktop',
src: 'img/desktop.png',
pos: 0
},
{
type: 'tablet',
src: 'img/tablet.png',
pos: 0
},
{
type: 'mobile',
src: 'img/mobile.png',
pos: 0
}
]
};
在'desktop.png GET 304 png angular.js:3151 243 B 4 ms',是304的HTTP状态码?你真的需要重定向这些请求吗? –
@ThomasLandauer'304' HTTP状态码不是重定向。 – Fenton
@索尼:谢谢,刚才注意到我自己;-)'304'是'Not Modified'。 –