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

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

За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
TL;DR: Angular Signals может облегчить отслеживание всех выражений в представлении (Component или EmbeddedView) и планирование пользовательских...
Sniper-CSS, избегайте неиспользуемых стилей
Sniper-CSS, избегайте неиспользуемых стилей
Это краткое руководство, в котором я хочу поделиться тем, как я перешел от 212 кБ CSS к 32,1 кБ (сокращение кода на 84,91%), по-прежнему используя...
6
0
6 790
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

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

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

Ответ принят как подходящий

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

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

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

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

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

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

Что отключает поддержку активности для ВСЕХ агентов MSIE. ИМХО, это слишком консервативно, последними браузерами MSIE, в которых возникали проблемы с использованием SSL, были 5.x и непропатченные версии 6.0 до SP2, которые сейчас очень редки. Следующее является более мягким и не отключает сообщения поддержки активности при использовании 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.

Поэтому правильно установите заголовок Expires: и 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>

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

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

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

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