2008-09-17 59 views
0

在運行於Tomcat上的服務器端應用程序中,我根據隨機用戶請求的網站從Internet上拉下來生成完整的HTML頁面(帶有標題)。客戶端應用程序使用異步回調來請求處理特定的網頁。由於處理可能需要一段時間,我想通過輪詢通知用戶進度,因此回調。如何在向客戶端推送完整HTML內容時避免在服務器端創建臨時文件?

在服務器端,在檢索到網頁後,會對其進行處理並創建一個「增強」版本。然後這個版本必須回到用戶。 將頁面顯示爲客戶端應用程序頁面的一部分不是一個選項。

目前,服務器生成一個臨時文件併發回一個鏈接到它。這顯然不是最理想的。

我可以想出下一個最佳解決方案創建一個緩存數據庫,該數據庫將HTML內容與其md5-sum或sha1-id一起存儲,然後將鏈接發送回servlet,並將hash-ID一個論點。然後servlet從緩存數據庫請求站點。

有沒有更好的解決方案?如果不是,你會建議哪個DB後端?我正在考慮SQLite。部分問題需要解決的是:如何將頁面<html>轉換爲</html>回到客戶端?

回答

1

如果不需要真正的持久性如何使用更像時間像memcached而不是SQL的東西?調用語義非常簡單 - 當然,您可以手動,ttl或@重新啓動數據。

1

而不是創建一個臨時文件,填充它,然後發送一個鏈接,你可以創建一個內存緩衝區,填充它,然後發送作爲響應(與MIME類型的文本/ HTML')。如果您不想立即發送頁面緩衝區,則可以將它們保存以供稍後在用戶的會話中使用。如果您擔心會以這種方式佔用太多內存,您可能只想在內存中保留一定數量的頁面緩衝區,然後將其餘的內容寫入磁盤以供以後檢索。使用數據庫聽起來像過度殺毒(畢竟,沒有涉及任何關係信息) - 但它會很好地解決緩存問題。

相關問題