2013-03-03 28 views
2

我想花幾個小時解決以下緩存問題。通過TCPDF禁用顯示在iFrame PDF中的瀏覽器緩存

我的應用程序具有以下結構(簡化):

  1. 的index.php - 主頁(包含各種輸入字段,提交按鈕和dispaying PDF內容與TCPDF的幫助下一個iframe)

  2. generate.php - 基於所提供的POST參數PDF文件與文件存儲到文件系統

  3. viewer.php - 顯示PDF文檔(TCPDF庫)。 iframe加載此腳本以顯示pdf文件

工作流非常簡單 - 用戶選擇一些選項並單擊主頁上的提交按鈕。所選參數通過POST發送到每個AJAX的generate.php腳本。該腳本生成PDF文件並將其存儲到文件系統。最後它返回新創建/編輯的文件名。文件名是在AJAX回調函數,然後刷新新/編輯文件名的iframe牽強:

viewer.php?filename=NEW_OR_EDITED_FILENAME 

一切工作,但是當文件被替換,有時(並不總是),瀏覽器顯示舊的pdf文件,雖然新版本在硬盤上。我嘗試了以下解決方案:

  1. 添加Meta標籤禁用緩存由的index.phpviewer.php
  2. 禁用緩存jQuery的AJAX生成的HTML調用由:jQuery.ajaxSetup({cache: false});
  3. 在文件名參數中添加一些隨機字符串:

    viewer.php?filename = FILENAME_RANDOMSTRING

然後從腳本中刪除RANDOMSTRING並提取文件名。 這些解決方案都不適合我。經測試的瀏覽器是:Chrome 25.0.1364.152Firefox 19.0。有人可以幫我弄這個嗎? 在此先感謝

回答

1

剛剛有同樣的問題,但是添加一個隨機字符串後,它完美的作品:

<iframe src="file.pdf?=<?=time();?>"></iframe> 
+0

感謝您的回答羅伊!這看起來非常好!我從來沒有嘗試在** filename **參數之外添加隨機字符串,不知道爲什麼......也許這是它沒有工作的原因。將盡快嘗試您的解決方案,如果它能正常工作,請將其標記爲正確答案 – maddob 2013-05-06 09:37:55

+0

不客氣! – Roy 2013-05-06 14:53:30

0

多小時的努力後,我找到了解決辦法是真正生成一個新文件每次(方案三從沒有問題,在文件的結尾去掉隨機字符串)。因此,有必要更新數據庫並在每次更改時刪除舊文件。我最初的目的是爲了避免這些動作,但遺憾的是沒有其他辦法發現