Что я должен сделать, чтобы контент, такой как изображения, передаваемые по протоколу HTTPS, кэшировался на стороне клиента?

StackOverflow https://stackoverflow.com/questions/72358

  •  09-06-2019
  •  | 
  •  

Вопрос

Я использую Tomcat в качестве сервера и Internet Explorer 6 в качестве браузера.Веб-страница в нашем приложении содержит около 75 изображений.Мы используем SSL.Кажется, что весь контент загружается очень медленно.Как я могу настроить Tomcat так, чтобы IE кэшировал изображения?

Это было полезно?

Решение

Если вы обслуживаете страницу по протоколу https, то вам необходимо обслуживать все включенные статические или динамические ресурсы по протоколу https (либо из того же домена, либо из другого домена, также по протоколу https), чтобы избежать предупреждения безопасности в браузере.

Содержимое, доставляемое по защищенному каналу, по умолчанию большинством браузеров не записывается на диск и поэтому хранится в кэше памяти браузера, который намного меньше кэша на диске.Этот кэш также исчезает при завершении работы приложения.

Сказав все это, есть вещи, которые вы можете сделать, чтобы улучшить кэшируемость SSL-ресурсов внутри одной настройки браузера.Для начала убедитесь, что все ваши ресурсы имеют разумный срок действия и заголовки, контролирующие кэширование.Если tomcat находится за apache, то используйте mod_expires, чтобы добавить их.Это избавит браузер от необходимости проверять, менялось ли изображение между страницами

<Location /images>
   FileEtag none
   ExpiresActive on
   ExpiresDefault "access plus 1 month"
</Location>

Во-вторых, и это характерно для MSIE и Apache, большинство конфигураций apache ssl включают эти строки

SetEnvIf User-Agent ".*MSIE.*" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

Который отключает keepalive для ВСЕХ агентов MSIE.ИМХО, это слишком консервативно, последними браузерами MSIE, у которых возникали проблемы с использованием SSL, были версии 5.x и unpatched версии 6.0 pre SP2, обе из которых сейчас очень редки.Следующее является более мягким и не отключает keepalives при использовании MSIE и SSL

BrowserMatch "MSIE [1-4]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [5-9]" ssl-unclean-shutdown

Другие советы

Некоторые браузеры кэшируют содержимое SSL.Firefox 2.0+ по умолчанию не кэширует ресурсы SSL на диске (для повышения конфиденциальности).Firefox 3+ не кэширует их на диске, если только не появится заголовок Cache-control: public.

Так что установите срок действия:заголовок корректен, а кэш-контроль: общедоступный.например ,

<Files ~ "\.(gif|jpe?g|png|ico|css|js|cab|jar|swf)$">
        # Expire these things
        # Three days after access time
        ExpiresDefault  "now plus 3 days"
        # This makes Firefox 3 cache images over SSL
        Header set Cache-Control public
</Files>

Если многие из этих 75 изображений являются значками или картинками, которые появляются на каждой странице, вы можете использовать CSS-спрайты, чтобы резко сократить количество HTTP-запросов и, таким образом, ускорить загрузку страницы:

http://www.alistapart.com/articles/sprites/

75 изображений - это много.Если это много маленьких изображений, есть способы объединить много изображений в одно, вы могли бы посмотреть, сможете ли вы найти библиотеку, которая делает это.Кроме того, вы, вероятно, можете принудительно кэшировать изображения чем-то вроде механизмы Google.

Контент, передаваемый по HTTPS-соединению никогда не кэшируется в браузере.Вы ничего не можете с этим поделать.

Обычно изображения на вашем веб-сайте не очень чувствительны и передаются по протоколу HTTP именно по этой причине.

Первый ответ верен в том, что при использовании HTTPS ничего не кэшируется.Однако при создании своей веб-страницы вы можете использовать ссылки на изображения по их индивидуальным URL-адресам.Таким образом, вы можете указать изображения как исходящие из HTTP-источника, и они (скорее всего) будут кэшироваться браузером.

Может быть, вы можете добавить дополнительный сервер / поддомен, который предоставляет изображения без https?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top