Принудительно не кэшировать на стороне сервера Включить?

0

У меня статическая страница HTML, которая включает вторую страницу HTML, через (Apache) include virtual.

Вторая страница также является статичной, за исключением того, что она включает в себя содержимое select HTML через include с сервера:

   <select id = "idListOpts" class="form-control input-md" size = 1>
     <!--#include virtual="/cgi-bin/listopts" -->
   </select> 

Это прекрасно, за исключением того, что скрипт listopts (фактически скомпилированный C++) является динамическим и возвращает содержимое из изменяющейся базы данных. Проблема в том, что я не могу ничего сделать, чтобы убедить браузер (FF 27, Chrome, Opera, IE9), что select действительно динамический. Я попытался возвратить различные директивы no-cache в заголовок listopts, и в настоящее время я использую:

   "Status: 200 OK\n"
   "Pragma: no-cache\n"
   "Cache-Control: no-cache\n"
   "Cache-Control: max-age=0\n"
   "Content-Type: text/html\n\n"
   "<option value=\"-1\">...etc"

Насколько я могу разобраться с Firebug, вся HTML-страница, включая все виртуальные, загружается только один раз, когда страница обновляется вручную, а select содержимое select только в это время и включается как статический список. Это не похоже на то, что говорят Apache. Документы говорят, что SSI могут использоваться, когда динамически генерируется только часть страницы.

Любая идея, как исправить это, без JavaScript/Ajax?

Теги:
cgi
ssi

1 ответ

0

В зависимости от используемой версии Apache HTTPd попробуйте использовать элемент exec с атрибутом cgi установленным для скрипта. NB, для этого требуется mod_cgi, но я предполагаю, что это уже на месте.

Например:

<!--#exec cgi="/cgi/listopts" -->

Если это не сработает, я бы отлаживал вашу программу C++ и проверял, что гарантированно будет возвращать новые данные по каждому запросу. Если вы еще этого не пробовали, я бы использовал strace или эквивалентное приложение для проверки listopts программу listopts и listopts ответы, которые он возвращает.

  • 0
    @EML это охватывает ваш вопрос?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню