Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Заголовок 304 ajax ответа (https://javascript.ru/forum/misc/80539-zagolovok-304-ajax-otveta.html)

micscr 18.06.2020 09:00

Заголовок 304 ajax ответа
 
Вложений: 1
Приветствую.
Хотел уточнить, как работает схема:
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, они все время делают эти аякс запросы, без "экономии", проверок на то что уже были загрузки этих данных раньше?

laimas 18.06.2020 09:05

Цитата:

Сообщение от micscr
Получается что в таких случаях сервер физически не передает браузеру данные?

Статус 304 Not Modified сообщает клиенту, что данные не изменились и клиент может продолжать использовать кешированные данные.

micscr 18.06.2020 09:30

Да, уже вычитал что сервер данные назад не шлет.
Раньше вручную с этими заголовками If-Modified-Since и подобным не сталкивался, а axios получается их шлет и тот json-server это понимает.

laimas 18.06.2020 09:31

Дополнительно https://developer.mozilla.org/ru/doc...овки/ETag

micscr 18.06.2020 13:13

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

Это я делаю 2 запроса к доступному в инете апи, первый запрос был на странице раньше, а это второй. Всегда считал что Аякс запросы ж вроде не кешируются.

Malleys 18.06.2020 16:36

Цитата:

Сообщение от micscr
Всегда считал что Аякс запросы ж вроде не кешируются.

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

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

Цитата:

Сообщение от micscr
как понимать когда в DevTools показывает что ответ 200 и при этом пишет кэшировано и 0 байт?

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

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


Malleys 18.06.2020 18:59

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

micscr 19.06.2020 06:21

Ясно, спасибо.


Часовой пояс GMT +3, время: 09:52.