IE6 не кэширует мои изображения - PullRequest
0 голосов
/ 18 октября 2010

Я загрузил свое веб-приложение уже на своем производственном веб-сервере Tomcat.
Я пытаюсь его уже протестировать, и оно отлично работает на FF / IE7 / IE8, но у меня возникают проблемы с отображением на IE6.

Я заметил в строке состояния, что IE6, похоже, время от времени загружает изображения.Несмотря на то, что я ничего не нажимал, он все равно загружает изображения.

Я использую меню, в котором используются изображения, и он плохо отображается в IE6.Проблема в том, что 60% моего целевого пользователя работает в этом браузере.

Я начинаю думать, что это проблема кэша браузера.Во всех моих JSP я размещаю метатег во всех разделах заголовка.Я сделал это, потому что мои приложения сильно зависят от Ajax, и мне нужна последняя копия моего веб-ресурса.

<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT">
</head>

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

Я не совсем уверен, что это то, что вы ищете, но любезно сообщите, если я что-то пропущу.

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

@ Pekka, Это то, что вы ищете?

Response Headers
Server  Apache-Coyote/1.1
Etag    W/"1957-1275442082000"
Date    Mon, 18 Oct 2010 11:37:00 GMT

Request Headers
Host    atpapps03:9090
User-Agent  Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729)
Accept  image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Referer http://atpapps03:9090/rts/css/menu.css
Cookie  JSESSIONID=0DD210EE0B2788A7774B10D477734DA9
If-Modified-Since   Wed, 02 Jun 2010 01:28:02 GMT
If-None-Match   W/"1957-1275442082000"
Cache-Control   max-age=0

Ответы [ 3 ]

2 голосов
/ 18 октября 2010

Во всех моих JSP я размещаю метатег ниже во всем разделе заголовка. Я сделал это, потому что мои приложения сильно зависят от Ajax, и мне нужна последняя версия моего веб-ресурса.

Есть две проблемы:

  1. Метатеги игнорируются веб-браузером. Поместите эту информацию в заголовок ответа.

  2. Даже если это не было проигнорировано, мета-правила будут применяться только к выводу HTML JSP и, следовательно, не ко всем связанным ресурсам (img, js, css и т. Д.) Внутри вывод HTML. У каждого из них свои правила в заголовке ответа.

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

private static final long DEFAULT_EXPIRE_TIME = 604800000L; // ..ms = 1 week.

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    final long twoWeeksAhead = System.currentTimeMillis() + DEFAULT_EXPIRE_TIME;
    ((HttpServletResponse) response).setDateHeader("Expires", twoWeeksAhead);
    chain.doFilter(request, response);
}

Сопоставьте этот фильтр с web.xml на url-pattern, охватывающем интересующий URL, например, /images/*.

1 голос
/ 18 октября 2010

см., Например, этот вопрос о том, как управлять настройками кэширования для статических типов файлов.

0 голосов
/ 18 октября 2010

Пекка верна , скорее всего, это контроль кэширования.Обойти это можно было бы путем загрузки ваших изображений из другого субдомена с другим набором заголовков кэша.Если вы используете провайдера CDN, он установит для вас управление кешем.

IE SUCKS!Идентифицировать его на IE 7-8-9.Очень немногие используют IE6, если это приложение для интрасети, быстрое исправление будет Chrome frame, обнаружит его, и если он не установлен, перенаправьте на страницу загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...