У меня большой вопрос: см. Ссылку на пример ниже. В настоящее время мое приложение добавляет ко всем «ресурсам / ссылкам» идентификатор сеанса. Я более или менее наткнулся на это случайно, заглянув в кеш Firefox:

http://localhost:8080/jquery-ui-1.7.2.custom.css;jsessionid=A8483FBF3BB6DDA499E06210BE0D612C

Мой большой вопрос: приведет ли URL-адрес, подобный указанному выше, к тому, что любой кеширующий заголовок (я использую Cache-Control с несколькими годами) станет более или менее бесполезным, поскольку идентификатор сеанса сделает каждый запрос уникальным?

(==> Я имею в виду, что новый идентификатор сеанса назначается через 30 минут. И кеширование, скорее всего, будет эффективно только в течение этого периода. По истечении этого периода будет сгенерирован новый идентификатор сеанса, косвенно аннулирующий весь кешированный контент на на стороне клиента, у которой в URL-адресе указан идентификатор сеанса = URL-адрес изменяется, поскольку теперь он имеет новый идентификатор сеанса.)

=> Являются ли браузеры настолько умными, чтобы определить, что ресурс для кеширования:

http://localhost:8080/jquery-ui-1.7.2.custom.css

И нет:

http://localhost:8080/jquery-ui-1.7.2.custom.css;jsessionid=A8483FBF3BB6DDA499E06210BE0D612C

Или sessionId в url приведет к тому, что в браузере более-менее отключено кеширование?

Большое спасибо! Ян

2
jan 10 Ноя 2009 в 17:53

2 ответа

Лучший ответ

Вопрос не в том, достаточно ли умен браузеры. В стандарте W3 для HTTP указано, что разные URL-адреса должны кэшироваться отдельно. Таким образом, браузеры правильно соблюдают полный URL-адрес, включая аргументы GET, такие как идентификатор сеанса, в их кешировании.

Вы не должны добавлять идентификатор сеанса к чему-либо , что является статическим (например, вашей таблице стилей).

3
Ben S 10 Ноя 2009 в 17:59
Привет Бен, спасибо за ответ и ссылку. Я погуглил, но документ W3 не появился. Это отличный документ, объясняющий все, что я искал. Так что спасибо за ответ.
 – 
jan
10 Ноя 2009 в 18:11
Недавно я ответил на этот вопрос: stackoverflow.com/questions/ 1674493 /… так что ссылка оказалась под рукой: D
 – 
Ben S
10 Ноя 2009 в 18:21

Вы правы - браузер недостаточно умен, и изменение URL-адреса довольно эффективно отменяет кеширование.

Почему у вас вообще есть идентификатор сеанса? Если ресурс не зависит от сеанса, удалите идентификатор сеанса из URL-адреса, и это решит вашу проблему. Если ресурс зависит от сеанса, то у вас уже есть все, что вам нужно, потому что один сеанс не должен использовать ресурс из другого сеанса.

3
Vilx- 10 Ноя 2009 в 17:59