2008-09-16 105 views
1

我們的每個生產Web服務器都爲獨立的網站(ASP.NET Web應用程序)維護自己的緩存。目前要清除緩存,我們登錄到服務器並「觸摸」web.config文件。遠程重置Web場中服務器緩存的最佳方式是什麼?

有沒有人有一個安全/安全的方式的例子遠程重置特定Web應用程序的緩存?理想情況下,我們可以說「清除在所有服務器上運行的應用程序X的緩存」,並且「清除在服務器Y上運行的應用程序X的緩存」。

編輯/澄清:

  • 我也許應該澄清,通過應用程序本身做,這不是一個真正的選擇(即某種日誌中的應用,衝浪到指定的頁面或處理程序這將清除緩存)。爲了做到這一點,我們需要禁用/繞過日誌記錄和統計數據跟蹤代碼,或者弄亂我們的統計數據。

  • 是的,緩存定期到期。我想要做的事情是設置一些東西,這樣我可以根據需要過期緩存特定的緩存,通常在我們更改數據庫中的某些內容後(我們使用的是SQL 2000)。我們現在可以做到這一點,但只能通過登錄服務器本身。

回答

1

找到有關觸摸工具看起來有用一個DevX文章。

我打算嘗試將它與數據庫中的一個表(添加記錄並且觸摸工具找到它並更新相應的web.config文件)或Web服務(撥打電話和觸摸工具被調用來更新相應的web.config文件)

0

這可能不是「優雅」的,但您可以設置執行批處理腳本的計劃任務。該腳本本質上會「觸及」web.config(或其他可導致重新編譯的文件)。

否則,您的應用程序緩存未設置爲N分鐘後過期嗎?

1

對於每個應用程序,您都可以編寫一個cache-dump.aspx腳本來終止緩存/應用程序數據。將其複製到所有應用程序並編寫集線器腳本來管理呼叫。

爲了安全起見,您可以添加各種身份驗證查找或IP檢查。

來這裏的路上我做實際應用傾銷:

Context.Application.Lock() 
Context.Session.Abandon() 
Context.Application.RemoveAll() 
Context.Application.UnLock() 
相關問題