Человек я не слишком опытный - 1 год работы PHP-разработчиком.
У меня возникла следующая проблема.
Я разрабатываю функционал по типу добавления товаров в корзину.
И при добавлении нового товара корзина не торопится его показывать (хотя куки с новым составом корзины вроде прекрасно перезаписаны) - показывает старый состав корзины.
Очевидно, браузер, собака, берёт корзину из истории, из кэша.
Стал я с этим бороться всяко-разно.
Наткнулся тут, на Хабре на ровно такую же историю:
https://qna.habr.com/q/979783
И решение оказалось ровно таким же.
В htaccess, в к-ром и так уже было написано:
<IfModule mod_headers.c>
Header append Cache-Control "no-store, no-cache, must-revalidate"
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On ExpiresDefault "now"
</IfModule>
понадобилось добавить ещё:
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
Смущает меня то, что я вообще не понимаю, почему всем этим занимается сервер.
Это же чисто браузерные дела - что ему кэшировать, что не кэшировать.
Почему мне не хватило для решения моей проблемы добавления в head в html файла с корзиной вот этого:
<meta http-equiv="Cache-Control" content="no-store">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
Ок, я мог бы понять, если б мне надо было запретить кэширование в целой директории, прописать это на сервере тупо удобнее, наверн.
Но мне-то, например, нужен запрет кэширования для одного отдельного файла.
И почему он не действует, почему сервер позволяет себе указывать браузеру как тому работать?