2015-05-11 3 views
0

Я сохранил изображения в своей базе данных и должен обслуживать эти изображения пользователю на своем веб-браузере.Spring MVC (и angularjs) - Получение изображений: использование высокой памяти в Chrome

Моя проблема заключается в том, что следующий метод, который служит для этих изображений, заставляет мой веб-браузер потреблять много памяти (600 МБ). Причина, по которой я знаю это, заключается в том, что если я верну null, использование памяти останется практически таким же и будет низким.

Я использую этот метод только для доступа к 5 изображениям. Все не более 5 мб.

Я показываю изображение, как следует по телефону следующее, на мой взгляд (angularjs):

<img ng-src="http://localhost:8080/myapp/show/{{user.id}}" 

Любые советы/рекомендации очень ценится.

ответ

1

Увеличенное потребление памяти на стороне клиента веб-браузера может быть вызвано только избыточным количеством запросов, отправляемых на http://localhost:8080/myapp/show/{{user.id}} и получаемых на стороне клиента внутри углового.

Приложения, использующие Angular, должны потреблять память в браузере, но это способ сделать многое. Что вы можете сделать, так это иметь ShallowETagHeaderFilter в приложении Spring MVC, так что если файл изображения не будет изменен, он не отправит файл в приложение Angularjs. Это приведет к возврату 304 "Not Modified", если изображение не будет изменено, чтобы браузер мог загрузить его из кеша.

Примечание:

ShallowETagHeaderFilter еще будет потреблять обработку циклов, но это позволит сэкономить полосу пропускания и памяти браузера.

+0

Спасибо за ваш комментарий. По какой-то странной причине я не могу реализовать ShallowETagHeaderFilter. Я предполагаю, что это может работать правильно? http://stackoverflow.com/questions/17821518/unable-to-cache-images-served-by-spring-mvc – Moody

+0

Вам не нужно его реализовывать. Просто поместите его в свой web.xml или WebApplicationInitializer с/** шаблоном url. – shazin