Мне нужно сгенерировать и доставить относительно большой JSON-файл пользователям. По большому счету я имею ввиду 400 кб. Это объединение двух таблиц, и, вероятно, со временем оно станет больше. Я планирую использовать его для заполнения пробелов в таблице HTML, связывая элементы по идентификаторам из базы данных.
Чтобы сэкономить пропускную способность, я хотел, чтобы клиент загружал этот файл JSON только один раз в день. (Кажется, простыми вариантами являются «каждый раз» и «никогда» ... гр.) На самом деле, он будет обновляться реже на стороне сервера, но я не хочу, чтобы это происходило реже. 90% браузеров, использующих эту опцию, - IE7 / 8, если это имеет значение.
Что касается кэширования на стороне сервера, я сейчас просто помещаю файл JSON в текстовый файл на сервере, если он старше нескольких часов. Я понимаю, что мог бы использовать memcached вместо этого. Имеет ли memcached значительное преимущество перед файлом? (Один сервер, 1 тыс. Посетителей в день, у меня еще не установлена memcached.)
Согласно комментариям к PHP, я попробовал это:
$expires = 60*60*24;
header("Pragma: public");
header("Cache-Control: maxage=".$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
Но, похоже, ничего не делает. Chrome сообщает мне, что он «ОК» каждый раз, когда я загружаю генерирующую страницу напрямую, и никакие заголовки, касающиеся управления кэшем, не отображаются на вкладке сеть / заголовки. Я явно не нажимаю на обновление. Не похоже, что я кеширую вообще. Есть ли другие способы сэкономить клиенту некоторое время и пропускную способность? Лучшая идея, которую я имею, - это творческий подход с опцией кэша .ajax()
.
На самом деле я еще не дошел до реализации вызова Ajax. Детские шаги.
(Извините, если я немного многословен. Кричите на меня, и я улучшу вопрос настолько, насколько смогу, когда это будет необходимо. Я провел некоторые поиски здесь и в Google и ничего не встречал супер полезно пока. Может быть, у меня нет правильных ключевых терминов.)
Примечание: я использую PHP под IIS 7, так что это CGI. Я чувствую, что я читаю, что может иметь значение.