随着时间的推移快照网站
Posted
技术标签:
【中文标题】随着时间的推移快照网站【英文标题】:Snapshot website over time 【发布时间】:2009-05-04 19:32:07 【问题描述】:我是营销团队的开发人员,经常被要求的功能之一是:我们可以返回查看我们的网站(或 X 页面)在 X 中的样子吗?
有什么好的解决方案可以解决这个请求吗?
【问题讨论】:
【参考方案1】:源代码管理应该能够在内部解决您的请求。适当地标记事物并有一个内部服务器来部署该标签,你应该没有问题。如果您有一个自动部署工具并明智地选择您的标签,那么编写一个应用程序应该相对简单,该应用程序将在标签 X 处检查您的源并部署它,只需让用户输入标签即可。现在,如果您的标签与日期类似,他们只需以正确的格式输入日期并等待 5 分钟即可部署。
【讨论】:
【参考方案2】:看看way back machine,它并不完美,但我仍在处理一些令人尴尬的旧网站:)
【讨论】:
【参考方案3】:你看过archive.org上的回程机器吗?
http://www.archive.org/web/web.php
如果这不能满足您的需求,也许您可以使用您的源代码控制存储库自动执行某些操作,以提取特定日期的版本。
【讨论】:
【参考方案4】:类似于其他人的建议,(假设是一个动态网站)我会使用输出缓存来生成网页的代码,然后使用 Subversion 来跟踪更改。
使用 WayBack 机器可能只是最后的手段,例如,如果有人要求查看您设置此系统之前的网页。不能依靠 WayBack Machine 来容纳所需的一切。
【讨论】:
【参考方案5】:我的建议是每天晚上在网站上运行 wget 并将其存储在 archive.yourdomain.com
上。为具有将当前页面的 URL 传递到日期选择器的适当权限的用户添加一个控件到每个页面。选择日期后,加载 archive.yourdomain.com/YYYYMMDD/original_url
。
让用户在archive.yourdomain.com
上浏览整个站点时没有损坏的链接,可能需要重写一些 URL 或将站点的存档副本从某个存储库复制到 archive.yourdomain.com
的根目录。为了节省磁盘空间,这可能是最好的选择。存储压缩后的wget
副本,然后提取用户请求的日期。这存在一些问题,例如如何处理多个用户想要同时查看不同日期的多个存档页面等。
我建议每晚在您的网站上运行wget
优于从源代码管理中检索它,因为您将获得显示给 WWW 访问者的页面,包括任何动态提供的内容、错误、遗漏,随机旋转广告等。
编辑:您可以将wget
输出存储在源代码控制中,我不确定将它压缩到源代码控制之外的某个文件系统上会为您带来什么。另请注意,假设网站大小不限,此计划会随着时间的推移消耗大量磁盘空间。
【讨论】:
【参考方案6】:正如格兰特所说,您可以将 wget 与版本控制结合起来以节省空间。实际上,我正在尝试编写一个脚本来为我通常的浏览执行此操作,因为我不相信 Internet Archive 或 WebCite 会无限期地存在(而且它们不是很容易搜索)。
脚本会是这样的: cd to directory;调用正确的wget --mirror
命令或其他;运行darcs add $(find .)
将任何新文件签入存储库;然后darcs record --all
。
Wget 应该用更新的版本覆盖任何更改的文件; darcs add 将记录任何新文件/目录; darcs 记录将保存更改。
要获取日期 X 的视图,您只需从您的存储库中提取所有最新的补丁 X。
您不会无限期地存储许多重复副本,因为 DVCS 不会保存历史记录,除非文件内容发生实际更改。在页面更改为不再需要 CSS 或 JS 或您之前下载的图像的意义上,您将获得“垃圾”,但您可以定期删除所有内容并将其记录为补丁,下一次 wget 调用只会拉入需要最新版本的网页。 (而且您仍然可以进行全文搜索,只是现在您搜索的是历史记录而不是磁盘上的文件。)
(如果有大的媒体文件正在下载,您可以在它们得到darcs add
ed 之前将它们扔进rm $(find . -size +2M)
之类的东西来删除它们。)
编辑:我最终没有为显式版本控制而烦恼,而是让 wget 创建重复项并偶尔使用fdupes
清除它们。见http://www.gwern.net/Archiving%20URLs
【讨论】:
【参考方案7】:WayBackMachine 或许可以提供帮助。
【讨论】:
【参考方案8】:根据您的页面以及您的要求,您可能会考虑将页面的副本置于源代码管理中。
如果您的内容在数据库中,这可能不起作用,但如果它们只是随时间更改的 html 页面,那么 SCM 将是执行此操作的正常方法。每个人都提到的 WayBackMachine 很棒,但这个解决方案更针对公司,让您能够捕捉到随时间变化的细微差别。您无法控制 WayBackMachine(据我所知)。
在 Subversion 中,您可以设置挂钩并自动执行此操作。事实上,如果您使用数据库中的内容,这甚至可能会起作用......
【讨论】:
以上是关于随着时间的推移快照网站的主要内容,如果未能解决你的问题,请参考以下文章