我目前正在通過它們加載不同斷點(桌面,平板電腦,手機)和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'。 –