2008-09-17 60 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')。如果您不想立即发送页面缓冲区,则可以将它们保存以供稍后在用户的会话中使用。如果您担心会以这种方式占用太多内存,您可能只想在内存中保留一定数量的页面缓冲区,然后将其余的内容写入磁盘以供以后检索。使用数据库听起来像过度杀毒(毕竟,没有涉及任何关系信息) - 但它会很好地解决缓存问题。

相关问题