На сайте требуется указывать город. Для указания добавили автозаполнение с помощью плагина jquery. Список городов для автозаполнения подгружается с помощью ajax-запроса:
$.ajax({
type:"GET",
url: "/city_search_engine.php?q=Моск",
dataType: "json",
cache: true,
success: function( jsonResponse ) {
console.log(jsonResponse);
},
error:function() {
console.log(arguments);
}
});
Очевидно, что результаты поисковых запросов в данном случае будут меняться редко, поэтому я включаю кеширование (
cache: true), чтобы уменьшить время отклика и снять лишнюю нагрузку с сервера.
На сервере в php-скрипте, который выполняет поиск городов, устанавливаются следующие заголовки:
$lifetime = 1 * 365 * 24 * 60 * 60; // 1 год, в секундах.
header('Expires: '.gmdate('D, d M Y H:i:s', time() + $lifetime).' GMT');
header('Cache-Control: public, max-age='.$lifetime.', must-revalidate');
header('Pragma:cache');
Во время первого запроса сервер отправляет следующие заголовки:
Cache-Control:public, max-age=31536000, must-revalidate
Connection:keep-alive
Content-Type:application/json
Date:Sat, 16 Apr 2016 14:54:34 GMT
Expires:Sun, 16 Apr 2017 14:54:34 GMT
P3P:policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
Pragma:cache
Server:nginx/1.2.1
Set-Cookie:BITRIX_SM_ABTEST_s1=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=agravis.webformula.pro
Transfer-Encoding:chunked
X-Powered-By:PHP/5.4.4-14+deb7u9
X-Powered-CMS:Bitrix Site Manager (9fb97d46b0b3ef90719634e2020dfc72)
После этого повторные запросы все равно отправляются на сервер, а не берутся из кэша.
Запросы отправляются вот с такими заголовками:
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate, sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,nl;q=0.2
Cache-Control:max-age=0
Connection:keep-alive
Cookie:BITRIX_SM_LOGIN=admin; BITRIX_SM_menumode=N; BITRIX_SM_RCM_PRODUCT_LOG=81-mostviewed-1458283517; BX_USER_ID=58990ab90242f1098e7faa31b4432238; AgravisCityName=%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80; BITRIX_SM_LOGIN=admin; BITRIX_CONVERSION_CONTEXT_s1=%7B%22ID%22%3A1%2C%22EXPIRE%22%3A1460840340%2C%22UNIQUE%22%3A%5B%22conversion_visit_day%22%5D%7D; BITRIX_SM_SALE_UID=1; PHPSESSID=1eb6cb7629db6fe6f0117dd4761ef229
Host:agravis.webformula.pro
Referer:http://agravis.webformula.pro/
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
X-Requested-With:XMLHttpRequest
Подскажите, пожалуйста, почему не происходит кэширование результатов запроса. И как мне сделать, чтобы результаты кэшировались?