我已經做了大量的研究,並已經問了很多人的幫助,但仍然沒有成功。這裏是細節...爲什麼在發送no-cache頭文件後頁面仍然會被緩存?
我參與開發一個網站,從各種數據文件中提取數據,將它們合併到一個臨時.csv文件中,然後使用流行的圖形庫進行圖形化:dygraphs。該網站的大部分是用PHP編寫的。確定繪製數據的參數存儲在用戶會話中,.csv以用戶會話命名並可供下載,然後將.csv文件寫入腳本,將腳本傳遞給dygraphs對象。而我們發現,即使是沒有緩存的頭髮送:
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
很多用戶體驗在一個會話中,(如果產生足夠不同的圖形)顯示的較舊的,靜態渲染頁面頁面(他們早先在會話中繪製過的數據),就好像它被緩存和加載,而不是獲得新的請求。它只是變得怪異,但:
我已經在Firefox和Chrome瀏覽器使用的開發工具檢查和兩種瀏覽器都接受無緩存頭就好了;即使在查看頁面源代碼時發生問題,源代碼也是正確的內容(表格/圖例也是使用php動態創建的,源代碼顯示正確的表格,但渲染的是舊內容);頁面開始正確呈現,直到圖表即將顯示,然後顯示較舊的內容;較舊的內容顯示爲完全靜態疊加 - 緩存圖形沒有相同的動態功能(滾動數據點顯示,縮放和平移等)並且好像正確的頁面位於其下方某處(csv文件的下載按鈕取決於表的大小,如果您點擊下載.csv按鈕,則較舊的靜態頁面不會執行任何操作,但如果您可以設法在頁面下方找到該頁面,則可以單擊仍然下載.csv格式。該數據在.csv是正確的)
這是我在看到發展迄今爲止最奇怪的事情之一。其他一些相關的事實是,我親身體驗過的所有問題都是在使用Chrome時發生的。 Firefox用戶已經報告過這些症狀。 IE用戶也遇到同樣的問題(IE用戶被迫使用chrome框架)。
我在這個時候在我的智慧結束。我們發送了php頭文件;我們已經嘗試在IIS上將php的緩存配置文件設置爲「DisableCache」(或其他)。我們已經嘗試發送一個隨機查詢字符串到結果頁面;我們已經嘗試了所有適當的元標記 - 都沒有成功。
謝謝,這似乎是工作。 – clementine