2014-03-25 104 views
0

我有一個靜態HTML頁面,其中包含第二個HTML頁面,通過(Apache)include virtual強制服務器端包含no-cache?

第二頁也是靜態的,不同之處在於它包括一個HTML select的經由內容從服務器包括:

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

這是好的,不同之處在於listopts腳本(實際上編譯的C++)是動態的,並從不斷變化的數據庫返回內容。問題是我無法說服瀏覽器(FF 27,Chrome,Opera,IE9)select實際上是動態的。我試着在listopts頭回各種no-cache指令,目前我使用:

"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" 

至於我可以做出與螢火蟲,整個HTML頁面,包括所有的虛擬包括,只裝一次手動刷新頁面,並且select內容僅在當時被提取,並且包含爲靜態列表。這似乎不是Apache文檔所說的。 docs表示只有部分頁面要動態生成時才能使用SSI。

任何想法如何解決這個問題,缺乏JavaScript/Ajax?

回答

0

根據所使用的Apache HTTPd的版本,嘗試使用exec element並將cgi屬性設置爲腳本。注意,它需要啓用mod_cgi,但我認爲這已經到位。

例如:

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

如果不行,我會調試你的C++程序,並檢查它是保證每一個請求返回的新數據。如果您還沒有嘗試過,我會使用strace或同等的探測應用程序來檢查對listopts程序的呼叫,並檢查它返回的響應。

+0

@EML是否覆蓋您的問題? – Sasha