任何人都可以确认(最好带有文档的链接)在同步文件之前是否完整上传MSDeploy软件包,还是在msdeploy.exe和msdeploy.axd之间进行同步(只修改了文件) ?
或者,换句话说,如果我有1GB的包zip只包含1MB的更改文件,msdeploy将整个1GB包上传到MsDeploy.axd并在服务器上执行同步或它只会上传1MB的更改文件吗?
答案 0 :(得分:3)
此文档是否足够官方,您可以相信您观察到的行为是确定性的?
http://www.iis.net/learn/publish/using-web-deploy/introduction-to-web-deploy
“Web部署与FTP相比如何?”,第1点:
Web部署比FTP更快。 Web Deploy不会为每个操作发出不同的命令。相反,它在同步开始时进行比较,只传输更改。
答案 1 :(得分:1)
以下是Microsoft员工对类似问题的回答:http://forums.asp.net/post/4361026.aspx
此外,这是一篇非常有用的文章,详细介绍了如何组装软件包的过程:http://blog.winhost.com/using-msdeploy-to-publish-your-site/
答案 2 :(得分:1)
由于很难让MSDeploy通过代理运行,因此我只需使用一个巨大的文件(750MB)就可以使这个过程更加明显。
对于代理服务(http://localhost:80/MsDeployAgentService
),我可以确认不上传整个软件包。如果我从服务器(localhost)中删除该文件,则部署需要大约25秒。一旦文件已经存在,部署几乎是即时的。鉴于我的机器规格,那时它没有办法将750mb传输到内存中(更不用说通过HTTP传输它了)。
更新我还可以在部署到远程(尽管是同一网络)MsDeploy.axd
服务时确认相同的行为。初始部署为50秒,下一次部署为< 1秒。
更新2 IIS团队的Kristina Olson在her comment中确认了这一点:
Web Deploy分为两部分进行增量同步,因此在第一部分中,它仅发送有关文件内容的元数据,以确定哪些文件实际需要更新,因此在第二部分中,只有那些增量更新文件通过线。基本上,每个文件的元数据(如名称,大小,写入时间等)都是通过网络发送的,但除非文件需要更新,否则实际文件内容不会发送