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