Я задавал этот вопрос раньше и не получил ответа, поэтому я добавляю больше информации.Я создал онлайн-сервис, который немного загружен на js с использованием Spring 3 MVC и Spring Security для аутентификации / авторизации.HTTPS является обязательным требованием для любого взаимодействия, поэтому оно включено для всех запросов.Настройка сервера состоит из одного сервера приложений Tomcat 7 (может добавить больше в будущем) за сервером Apache2, который действует как обратный прокси-сервер с mod_proxy, mod_cache и mod_deflate.Заголовки кэша установлены для всех кэшируемых ресурсов (js, css, images):
Cache-Control:max-age=604800, must-revalidate, public
Приведенный выше заголовок имеет желаемый результат как в браузерах Firefox, так и в браузерах IE (как минимум версии 3+ и 8+ соответственно).что я проверял), т.е. оба браузера кэшируют файлы .js и .css соответственно, если только пользователь не обновит страницу, поэтому браузер добавит к заголовку запроса Cache-Control:max-age=0
и получит ответ 304 или вызовет обновление с помощью Cache-Control:no-cache
, так что он будет перезапускать ресурс.С другой стороны, Google Chrome ведет себя по-разному, хотя он кэширует файлы, которые привязывает их к конкретному сеансу, назначенному пользователю, добавляя jsessionid к ключу, который используется для хранения файлов в кеше.Это приводит к тому, что файлы повторно выбираются с сервера каждый раз, когда пользователь входит / выходит из системы или закрывает браузер (Spring security имеет временный идентификатор сеанса и другой, запомните меня).Основной CSS, который используется как для экрана входа в систему, так и для основного сайта, даже дважды выбирается, когда пользователь заходит на экран входа в систему и когда он перенаправляется на основной сайт после входа в систему (поскольку теперь Chrome вводит файл в кэш, который не имеетсессион привязан к нему).