Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.06.2020, 09:00
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,576

Заголовок 304 ajax ответа
Приветствую.
Хотел уточнить, как работает схема:
1) отсылаю первый раз запрос - axios.get('http://localhost:3000/cities'
Получаю страницу с кодом 200 и данными в Ответе.
2) отсылаю затем второй такой же запрос - axios.get('http://localhost:3000/cities'
Получаю страницу с кодом 304 и тоже вроде данными в Ответе

Но если посмотреть фаербаг, то по 2-ому написано что кешировано (см. вложенный файл).
Получается что в таких случаях сервер физически не передает браузеру данные?
Типа сервер посмотрел у себя что мол данные не изменились, отдам просто заголовок 304, а браузер возьмет ответ с предыдущего запроса?

p.s. API работает сейчас на json-server

p.s.2 Может это причина что в коде примеров по vue, они все время делают эти аякс запросы, без "экономии", проверок на то что уже были загрузки этих данных раньше?
Изображения:
Тип файла: jpg 304.jpg (65.9 Кб, 6 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 18.06.2020, 09:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от micscr
Получается что в таких случаях сервер физически не передает браузеру данные?
Статус 304 Not Modified сообщает клиенту, что данные не изменились и клиент может продолжать использовать кешированные данные.
Ответить с цитированием
  #3 (permalink)  
Старый 18.06.2020, 09:30
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,576

Да, уже вычитал что сервер данные назад не шлет.
Раньше вручную с этими заголовками If-Modified-Since и подобным не сталкивался, а axios получается их шлет и тот json-server это понимает.
Ответить с цитированием
  #4 (permalink)  
Старый 18.06.2020, 09:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Дополнительно https://developer.mozilla.org/ru/doc...овки/ETag
Ответить с цитированием
  #5 (permalink)  
Старый 18.06.2020, 13:13
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,576

А как понимать когда в DevTools показывает что ответ 200 и при этом пишет кешировано и 0 байт? (см. приложенную картинку)

Это я делаю 2 запроса к доступному в инете апи, первый запрос был на странице раньше, а это второй. Всегда считал что Аякс запросы ж вроде не кешируются.
Изображения:
Тип файла: jpg 304.jpg (70.4 Кб, 5 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 18.06.2020, 16:36
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от micscr
Всегда считал что Аякс запросы ж вроде не кешируются.
Здесь стоит уточнить, что никаких Аякс запросов не существует, в описываемом вами случае вы используете протокол HTTP и совершаете GET-запрос. Для работы с сетью в JS есть xhr и fetch. Вы решили использовать стороннюю библиотеку axios, которая является обёрткой над xhr.

Каким бы способом не совершались GET и прочие запросы, они всегда связаны с протоколом HTTP. И древнегреческая мифология тут ни при чём! Или это культ Аякса?

Сообщение от micscr
как понимать когда в DevTools показывает что ответ 200 и при этом пишет кэшировано и 0 байт?
Это значит, что основываясь на заголовке Cache-Control, данные запроса были сохранены браузером на определённое время, и при следующем запросе браузер вычислил, что можно использовать данные от предыдущего сохранённого запроса. Соответственно никакого скачивания данных с сервера не было (передано 0 байт), и сохранённые данные (вместе со статусом 200, если именно такой и был при сохранении в кеше) были получены с диска.

Программирования Аяксом несомненно интересное и приятное времяпрепровождение, не зря же существуют фирмы, где Аякс разработчики могут собираться вместе и усовершенствовать свои навыки...


Последний раз редактировалось Malleys, 18.06.2020 в 16:55.
Ответить с цитированием
  #7 (permalink)  
Старый 18.06.2020, 18:59
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Rise, много благодарен за пересказ вышеизложенного! «Запрос» специально перепутан с «ответом», ведь в культе Аякса это обычное дело! Как в общем тут на форуме пишут «отправил [тело] Аякса и получил [тело] Аякса».

Последний раз редактировалось Malleys, 18.06.2020 в 19:06.
Ответить с цитированием
  #8 (permalink)  
Старый 19.06.2020, 06:21
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,576

Ясно, спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все делаю логично, но не работает. Сергей Ракипов Общие вопросы Javascript 30 04.07.2020 12:06
Проверка ответа от сервера Ajax gam0ra Общие вопросы Javascript 4 13.03.2015 23:16
Расположение ответа ajax stanyslove AJAX и COMET 1 04.12.2013 04:57
Обработка ответа после POST-запроса (jQuery - Ajax) battrack jQuery 6 29.07.2012 16:06
как дождаться AJAX ответа scuter Общие вопросы Javascript 3 23.03.2008 05:54