2008-11-11 39 views
2

我有一個系統,它坐在一個Web服務器上並根據HTTP請求動態生成文件。這當前是作爲HTTPHandler實現的。如何在ASP.NET中實現通讀文件緩存?

一旦文件生成後,它們不會經常更改,所以我想實現緩存。

理想情況下,我想Web服務器來看看緩存文件夾,並直接從那裏提供文件服務,而不具有執行我的代碼的任何(web服務器被設計成很會照顧所有在職的文件,所以如果我能避開那麼多的話)。

然後我想要做的是掛鉤到服務器的「找不到文件」事件中作爲創建文件的機會,在下次請求時將副本放入緩存文件夾中,並將其返回給用戶而不是「文件未找到」消息。

通過這種方式,重複請求文件的速度會很快,我的代碼只會在'特殊'情況下被調用。

所以 - 問題是 - 我如何將我的代碼以儘可能不引人注意和輕量級的方式連接到「文件未找到」事件?

感謝

回答

2

這其實很簡單,只需在IIS中將您的404錯誤頁面指向HTTPHandler即可。

Request.RawUrl看起來像:

http://yourdomain.com/yourhandler.ashx;originally/requested/url 
+0

這是令人尷尬的簡單!謝謝 - 我會試一試! – 2008-11-12 00:29:39

1

如何使用customError配置重定向到你的HttpHandler。

<customErrors mode="On"> 
    <error statusCode="404" redirect="FileGeneratorHandler.ashx" /> 
</customErrors> 

唯一的問題是引用頁是否可用的處理程序。