首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在客户端浏览器上呈现完整的网页后,立即在服务器端存储该网页的副本?

如何在客户端浏览器上呈现完整的网页后,立即在服务器端存储该网页的副本?
EN

Stack Overflow用户
提问于 2012-01-18 03:51:01
回答 5查看 1.1K关注 0票数 2

要求是在服务器端保留完整网页的副本,就像它在客户端浏览器上呈现的一样,因为过去的records.These记录被重新访问。

我们正在尝试存储渲染的网页的html。然后使用存在于服务器侧的诸如javascript、css和图像的资源来呈现html。这些资源一直在变化。因此,旧记录不再完美呈现。

有没有其他方法来解决上面的问题呢?我们也在考虑使用IText或apache FOP api将其转换为pdf,但他们在转换时不考虑javascript对页面的影响。在java中有没有可以实现这一点的APIs?

到目前为止,还没有一种方法可以完美地工作。请提个建议。

编辑:总而言之,要求是在服务器端创建渲染的网页的精确副本,以存储该页面上的用户活动。

EN

回答 5

Stack Overflow用户

发布于 2012-01-18 03:58:20

wkhtmltopdf应该可以很好地为您完成这项工作。它将接受一个URL,并返回一个pdf。

code.google.com/p/wkhtmltopdf

示例:

代码语言:javascript
复制
wkhtmltopdf http://www.google.com google.pdf
票数 1
EN

Stack Overflow用户

发布于 2012-01-18 04:52:39

取决于你的javascript有多复杂,以及你有多想要捕捉客户看到的东西,你可能正在承担一项不可能完成的任务。

在较高级别上,您有以下选项:

  1. 保留您发送到客户端的所有内容的副本
  2. 让客户端返回它呈现的所有内容
  3. 构建您的系统时,如果您需要重新生成浏览器的视图,则可以实际获取组成资源的所有历史版本。

您可以使用JSP过滤器等实现#1,但它不能解决在客户端呈现时javascript获取动态html内容之类的问题。

让客户端返回他们正在看到的内容(#2)是一件棘手的事情,而且会占用大量的带宽。

为了让一个网站呈现动态内容版本化,你必须做几件事。首先,所有的数据源也需要版本化。因此,任何查询都需要指定版本。"Version“可以是时间戳,也可以是您维护的某个生成计数器。如果您采用这种方法,还需要确保您提供给客户端的任何javascript都不会直接获取外部资源。相反,它应该从您的系统中请求任何资源。您的系统将依次获取外部内容(或从缓存重用)。

票数 1
EN

Stack Overflow用户

发布于 2012-01-18 03:57:18

答案将取决于用来编写HTML的服务器技术。您是否正在使用Java/JSP、Servlet或某种HTTPResponse对象来将HTML/数据推送到浏览器?

如果只有CSS/JS/HTML在改变,为什么你不直接截取客户端代码库的快照并将其存储为网站版本呢?

如果涉及到其他数据(如XML/JSON),则获取这些数据的快照并对其进行版本化。然后,上面提到的客户端代码库的快照和数据的当代快照应该一起为您提供网站在该时间点的准确呈现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8900796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档