У меня есть приложение JavaScript, которое отправляет запросы REST API, ответы от сервера содержат заголовки кеша (например, ETag, кеш-контроль, истекает). Является ли кэширование ответов в браузере автоматическим, или приложение должно реализовать какой-то механизм для сохранения данных?Является ли кэширование в браузере автоматическим?
ответ
запрос AJAX не отличается от обычного запроса - это GET/POST/HEAD ./что запрос отправляется в браузере, и он обрабатывается как таковой Это подтверждается here:.
HTTP-и кэш подсистемы современных браузеров на гораздо более низком уровне, чем объект XMLHttpRequest Аякса при этом уровне, браузер не знает или не заботится о запросах Ajax. Он просто подчиняется обычным правилам кеширования HTTP, основанным на заголовках ответов, возвращаемых с сервера.
Согласно the jQuery documentation, кэши также могут быть признаны недействительными по крайней мере, одним обычным способом (добавляя строку запроса):
кэш (по умолчанию: правда, ложь для DATATYPE «сценария» и ' JSONP ')
Тип: Boolean
Если установлено значение ложно, оно будет принудительно запрошенных страниц не должны быть в кэше браузера. Примечание. Установка кеша в false будет работать только с запросами HEAD и GET. Он работает, добавляя «_ = {timestamp}» к параметрам GET. Параметр не нужен для других типов запросов, за исключением IE8, когда POST отправляется по URL-адресу, который уже был запрошен GET.
Таким образом, при одинаковых заголовках ответы AJAX кэшируются так же, как и другие запросы.
Браузер должен автоматически обрабатывать кеш. Проверьте эту статью, есть только ясный метод кеша для javascript. https://developer.chrome.com/extensions/browsingData
Действительно ли это кеш ответа HTTP? Мне кажется, что это кеш для ресурса веб-сайта. –
Это зависит. Почти каждый современный браузер будет кэшировать .js, .css и изображения по умолчанию. В этих типах файлов есть опции, которые просят браузер не кэшировать. В конце пользователя обычно есть настройки, чтобы не кэшировать что-либо. –
Я не говорю о кешировании ресурсов, а о кешировании данных, которые поступают для отдыха api в json. –
Если сервер отправляет ответ с любым из заголовков кеша, браузеры должны его уважать. нет никакой разницы между ресурсами или ajax-запросами.
также вы можете указать заголовки кеша в своих вызовах ajax, чтобы они не использовали кеши и не получали весь ответ с сервера.
Большинство современных браузеров поддерживают кэширование браузера из кэша и истекает заголовки
http://www.arlocarreon.com/blog/http/http-requests-and-your-browsers-cache/
There are 2 apects of an HTTP request that can qualify it for being cached:
- Specifc HTTP cache and expire headers
- A unique URL
интересно читать:
http://www.mobify.com/blog/beginners-guide-to-http-cache-headers/
браузер обрабатывает автоматически кэш ресурсов. То, о чем вы, кажется, спрашиваете, - это ответ от сервера.
Вам нужно будет установить это в своем приложении. Вы можете сделать это как на front-end, так и на backend.
Большинство структур JS реализовали управления кэшем, например:
JQuery
$.ajaxSetup({
// Disable caching of AJAX responses
cache: false
});
AngularJS
$http.defaults.cache = false;
т.д.
На бэкэндом это действительно зависит от того, какой язык вы используете, двигатель какой сервер и т.д.
Checkout Memcached, например http://memcached.org/
Как и все с веб-разработки есть странные вещи здесь и там, например некоторые IE версии автоматически перехватывают запросы, и вам нужно добавить уникальный идентификатор к URL-адресу, чтобы это предотвратить.
От https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started:
Примечание 2: Если вы не установите заголовок Cache-Control: нет кэша браузера будет кэшировать ответ и никогда не будет повторно отправлять запрос, что делает отладку «сложной."Вы также можете добавить к всегда-с различным фильмом параметра GET, как метки времени или случайным число (см минуя кэш)
- 1. Является ли SJCL.random.startCollectors() автоматическим?
- 2. Является ли Git автоматическим скреплением?
- 3. Является ли F # автоматическим memoisation?
- 4. Кэширование файлов в браузере
- 5. Является ли session.cookie_secure в php.ini автоматическим?
- 6. Является ли импорт данных автоматическим в solr?
- 7. Кэширование в веб-браузере Android
- 8. Кэширование видео в браузере клиента?
- 9. Является ли mysql автоматическим сжатием базы данных?
- 10. Является ли java автоматическим буфером файлов IO?
- 11. Pharo 3.0 - Является ли постоянство автоматическим?
- 12. Является ли маршрутизация на кластере elasticsearch автоматическим?
- 13. Как предотвратить кэширование изображений в браузере HTML
- 14. Кэширование файлов javascript и css в браузере
- 15. В браузере: Кэширование обновлений после страницы (DOM)?
- 16. Является ли кэширование веб-сайтов актуальным сегодня?
- 17. Является ли кэширование общей формулы приложения NSDateformatter?
- 18. Почему constexpr не является автоматическим?
- 19. MyBatis + Redis кэширование. Является ли это возможным?
- 20. Является ли $ определенным в браузере или JavaScript?
- 21. Является ли первичный ключ автоматическим приращением, всегда необходимым в таблице?
- 22. Является ли сборщик мусора автоматическим в стандартном C++?
- 23. Как предотвратить кэширование изображений в браузере?
- 24. Страница Кэширование, лучшая практика по автоматическим истечениям/подметальные машины
- 25. Как определить, является ли почтовый элемент Exchange автоматическим ответом?
- 26. Есть ли способ показать, где LLVM является автоматическим векторизации?
- 27. Является ли Google Cloud Storage автоматическим глобальным CDN?
- 28. Является ли RIM Blackberry автоматическим выбором правильного изображения?
- 29. Является ли DBPedia проектом с толпой или автоматическим извлечением KB?
- 30. Является ли bower автоматическим обновлением себя из github?
Вы можете проверить себя, используя сетевой инспектор на chrome/firefox. (спойлер: да, браузеры будут кэшировать ajax-вызовы, если заголовки настроены правильно) –
Дубликат: http://stackoverflow.com/questions/1230998/cant-the-browser-just-use-its-cache-from-prior -ajax-calls –