Я немного почесал голову от этого. Запускаемый мной сайт Drupal устанавливает соответствующие заголовки кэша, которые должны указывать, что страница может быть кэширована в течение 15 минут. Однако каждый раз, когда я попадаю на страницу, она всегда отправляет запрос GET вместо загрузки страницы из кэша.
Я не принудительно обновляю страницу каждый раз, что, как я полагаю, указывает браузеру, что я хочу очистить кеш. У меня не включена очистка кеша в режиме разработчика.
Это просто поведение браузеров по умолчанию, или я упускаю что-то очевидное? Вот заголовки запроса / ответа от попадания на мою домашнюю страницу из инструментов FireFox dev:
ПРИМЕЧАНИЕ / РЕДАКТИРОВАТЬ : Некоторые люди предположили, что это было связано с тем, что Expires
заголовок был в прошлом. Однако Cache-Control
переопределяет что-либо в Expires
соответствии с описанием в RFC 2616 , раздел 14.9.3. Drupal включает это, чтобы отключить кэширование на старых клиентах HTTP 1.0, которые не поддерживают более продвинутый Vary
заголовок, который необходим Drupal для правильного кэширования.
В программах CMS некоторые страницы требуют взаимодействия с базой данных для отображения динамического контента, специфичного для запроса пользователей. Невозможно кэшировать всю страницу, иначе она не покажет пользователю правильное содержимое.
Примером этого на практике является страница корзины покупок / оформления электронной коммерции. Поскольку страница выглядит по-разному каждый раз, невозможно полностью ее кэшировать. Не зная больше о конкретной странице, трудно понять, требует ли страница, на которую вы ссылаетесь, базы данных.
источник
В дополнение к другим ответам,
Expires
заголовок ушел в прошлое, что также является одной из причин, почему браузеры не будут кэшировать страницу.источник
Cache-Control
заголовок. ПереопределяетExpires
заголовок для клиентов HTTP 1.1. См. Ietf.org/rfc/rfc2616.txt , раздел 14.9.3.