|
|
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
Есть обычная ссылка: Код: plaintext 1. Реакция на нее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Все обычное, стандартное и рабочее: нажимаем - отсылается ... но только один раз!! Любое посвторное нажатие, даже после смены страницы, не дает никакого результата - если при первом разе есть какая-то задержка на отсылку сообщения, то при последующих - мгновенная отработка request.readyDtate == 4. При повторном вызове обращения к сервлету уже нет. Похожая ерунда происходит со страницами: например, onLoad в тэге <body> отрабатывается только один раз при первой загрузке страницы, любое обновление или смена страниц не дает никакого результата - onLoad больше не отрабатывается. Я так понимаю, что происходит кеширование запросов в пределах одной сессии. Как от этого избавиться? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 10:51:28 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
добавить к строке запроса: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 10:53:12 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
Блин, ступил ... от метода реализации концепция не меняется: что малое, что большое ... Работает. Спасибо за наводку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 11:40:09 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
можно проще req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); А заголовки response типа Cache-control и pragma не помогают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 16:58:48 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
LINUXERА заголовки response типа Cache-control и pragma не помогают. В запросе - естественно, не помогают. Спецификация HTTP не предусматривает таких заголовков в ЗАПРОСАХ. Браузер же в действительности кэширует НЕ запросы, а ОТВЕТЫ. То есть вы не с того конца начали. Для того, чтобы ответ НЕ кэшировался, ваш сервлет должен послать в ответе соответствующие заголовки. Для HTTP/1.1 браузеров в 100% случаев достаточно послать Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 19:12:04 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
Deadyдобавить к строке запроса: Код: plaintext 1. 2. 3. 4. Очень плохой совет. Хотя и будет работать. Однако 1. Собственно код плохой. Поди разбери со стороны, зачем это сделано. Умный-то поймет, а дурак не догадается. А на сопровождение умных не хватает. 2. Если таких запросов будет несколько, кэш браузера будет забиваться ответами на эти по сути одинаковые, но с точки зрения браузера разные запросы. Браузер, клнечно, не загнется, но зачем заставлять его делать дурную работу? 3. На стороне сервера добавляется работа по экстракции дополнительного параметра запроса. Опять же сервер не загнется, но зачем заставлять его делать дурную работу? В общем, см. мой пост выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 19:21:01 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
Кеширование при использовании AJAX гораздо чаще мешает, чем помогает. Я его прибил глобально при помощи фильтра HttpServletResponse myHttpResponse=((HttpServletResponse)response); myHttpResponse.addHeader( "Cache-Control", "no-cache" ); myHttpResponse.setHeader( "Pragma", "no-cache" ); chain.doFilter(request, myHttpResponse); Теперь не нужно в каждой jsp думать о заголовках. Мне кажется это удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2007, 03:54:56 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
М.Голованов LINUXERА заголовки response типа Cache-control и pragma не помогают. В запросе - естественно, не помогают. Спецификация HTTP не предусматривает таких заголовков в ЗАПРОСАХ. Браузер же в действительности кэширует НЕ запросы, а ОТВЕТЫ. То есть вы не с того конца начали. Для того, чтобы ответ НЕ кэшировался, ваш сервлет должен послать в ответе соответствующие заголовки. Для HTTP/1.1 браузеров в 100% случаев достаточно послать Код: plaintext 1. Ещё бы заголовки RESPONSE помогали в ЗАПРОСАХ Хотя похоже я просто опечатался в одном из них и не все браузеры дали нужный результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2007, 09:28:13 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
v_777Кеширование при использовании AJAX гораздо чаще мешает, чем помогает. Я его прибил глобально при помощи фильтра HttpServletResponse myHttpResponse=((HttpServletResponse)response); myHttpResponse.addHeader( "Cache-Control", "no-cache" ); myHttpResponse.setHeader( "Pragma", "no-cache" ); chain.doFilter(request, myHttpResponse); Теперь не нужно в каждой jsp думать о заголовках. Мне кажется это удобно. вообще отказываться от кэширования не хорошо. Фильтровать выборочно ещё часто проблематичнее, чем писать серверные заголовки каждый раз Использование "If-Modified-Since" удобно, т к с клиента позволяет указывать что кэшировать, а что нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2007, 09:41:18 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
To LINUXER "If-Modified-Since" не поможет, если изменяется не jsp, а данные в базе, которые эта jsp отображает. Да я и не призываю всех "делай, как я", но в моем приложении действительно кеширование только мешало. А поскольку я уже использовал для аутентификации фильтр (одна точка входа на все приложение), то дописав в него 4 строчки решилась проблема кеширования. Если кому важно гибко решать, что кешировать, а что нет, тут конечно в каждой jsp нужно заголовки крутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2007, 14:54:33 |
|
||
|
Как избавиться от кеширования AJAX-запросов?
|
|||
|---|---|---|---|
|
#18+
v_777Кеширование при использовании AJAX гораздо чаще мешает, чем помогает. Я его прибил глобально при помощи фильтра HttpServletResponse myHttpResponse=((HttpServletResponse)response); myHttpResponse.addHeader( "Cache-Control", "no-cache" ); myHttpResponse.setHeader( "Pragma", "no-cache" ); chain.doFilter(request, myHttpResponse); Теперь не нужно в каждой jsp думать о заголовках. Мне кажется это удобно. Кстати, очень даже правильно. И разумно - поскольку по существу весь контент, генерируемый servlet engine, дниамический. И экономно, постольку не надо писать одно и то же в каждом сервлете / JSP. Как я раньше об этом не подумал?... тем более что фильтр у меня имеет каждое приложение. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 19:20:55 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34243931&tid=2146973]: |
0ms |
get settings: |
22ms |
get forum list: |
31ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
71ms |
get topic data: |
26ms |
get forum data: |
6ms |
get page messages: |
106ms |
get tp. blocked users: |
3ms |
| others: | 373ms |
| total: | 654ms |

| 0 / 0 |
