Asp.net

讓 ASP.NET / IIS 不記憶體 PDF 文件的正確方法

  • June 8, 2015

我有以下情況,我想就處理此問題的最佳方法提出建議。我的網路應用程序(ASP.NET 2.0 / IIS 6)生成 PDF 文件,我有一個結果頁面,其中包含指向這些 PDF 的連結。

現在,我注意到,如果我訪問結果頁面,點擊 PDF 文件(它會在新視窗中打開),然後重新生成 PDF 文件,然後點擊結果頁面中的相同連結,會顯示 OLD PDF ,而不是新的。我必須刪除臨時 Internet 文件才能看到新的。

因此,由於我沒有提供實際編寫 PDF 的 ASPX(並且我不希望顯示“保存”對話框),而是直接連結到 PDF 文件,所以我想知道確保使用者始終使用的最佳方法是什麼看到伺服器中的最新文件,而不是記憶體版本。

我猜想添加無記憶體標頭是不可能的。但是 PDF 請求仍然會通過 HTTP 處理程序,所以我想知道我是否應該創建一個特定的 HTTP 處理程序來攔截 PDF 請求,或者我是否應該在 IIS 級別執行此操作……但是我不一定希望避免在該站點上記憶體所有 PDF。

有什麼建議麼?在此先感謝您的幫助。

如果您指向 pdf 文件的連結附加了一個唯一的查詢字元串,我相信這會阻止記憶體。刻度時間是一個很好的使用方法,例如:

string.Format("{0}?t={1}", pdfFileUrl, DateTime.Now.Ticks);

清除臨時 Internet 文件為您提供了新版本的事實表明瀏覽器是記憶體的來源。您可以關閉 iis 記憶體,但這不會阻止代理記憶體文件。如果您需要 100% 確定使用者看到的是最新版本,我建議使用查詢字元串值來導致 url 不同。查詢字元串可以是 pdf 生成時間戳。

引用自:https://stackoverflow.com/questions/8233670