Azure发布的不同合并设置的权衡是什么?

Dir*_*oer 5 publish azure visual-studio precompile

通过Visual Studio发布到Azure时,可以选择预编译页面。有很多选项可以解释它的功能,但是却没有权衡取舍。

  • 我为什么不勾选“允许可更新”?
  • 为什么要合并为一个文件?这样更快吗?它加载速度更快还是编译速度更快?

Microsoft网站上有一些信息,但是在上述几点上,他们并没有真正涉足其中。

https://msdn.microsoft.com/zh-CN/library/hh475319(v=vs.110).aspx

在此处输入图片说明

Max*_*ime 9

我在Microsoft文档的不同页面上找到了有关这些选项的信息。这是通过将所有内容放在一起而发现的:


为什么我不勾选“允许预编译站点可更新”?

这可能会回答您的问题:

如果已编译的网站是可更新的,则可以在不重新编译网站的情况下更新UI内容。网站可更新时,内容文件保留在其原始文件夹中,并且仅合并了相关的代码文件。如果站点不可更新,则将从其原始文件夹中删除.ascx,.master和.skin内容文件。ASP.NET .aspx文件替换为没有内容的标记文件。在这种情况下,UI内容和代码将合并。

来源:https : //msdn.microsoft.com/en-us/library/bb397866.aspx

可更新的站点存储UI内容的源文件,并且不会对其进行编译。仅非UI代码是预编译的。这使更新站点变得非常容易,因为您可以更改一个网页的代码,而不必预先编译整个网站。此选项的缺点是无法对网页进行预编译,并且每次用户请求页面时都会对其进行编译(减去可能发生的缓存)。这将降低页面加载的性能。


为什么要合并为一个文件?这样更快吗?它加载速度更快还是编译速度更快?

将文件合并在一起使部署更容易,因为上传的文件较少。由于编译器可以在多个网页上进行批量优化,因此还可以进行更多优化。但是,合并所有内容时,必须在每次更改时完全重新部署站点(与仅部署已更新的程序集相比)。

以下是每个选项的权衡取舍:

将所有输出合并到一个程序集中将所有内容合并到一个文件中使部署更加容易,因为只有一个文件要上传。所有内容都在同一程序包中编译,这可以进行批处理优化,从而使页面加载更快。但是,如果网站的一部分发生更改,则必须重新上传整个网站。如果您的网站不是很大,那将是一个不错的选择。

将每个单独的文件夹输出合并到自己的程序集中:简化部署,同时避免每次更改都需要上载整个站点。只有包含更新代码的文件夹才需要重新编译和重新部署。

将所有页面和控件输出合并到单个程序集中:将所有UI置于同一程序集中,而不合并与UI不相关的代码。这使您可以更新与UI不相关的代码,而不必重新部署UI代码。

不要合并:代码文件已编译,但并非所有UI内容都已预编译。因此,每次用户请求页面时都会编译网页UI(减去可能发生的缓存),这会使页面加载时间更长。但是,由于未编译UI,因此,如果您需要编辑一个网页,则可以在生产服务器上上载特定文件的新版本,而不必重新编译网站的任何部分。这对于无法完全重新部署的大型网站很有用。

不要合并。为每个页面和控件创建一个单独的程序集: 将每个页面编译成自己的程序集。您具有预编译代码的速度,但是却以阻止编译器在多个页面上进行批优化(以稍长的页面加载时间)为代价。

有关asp.net网站的合并和编译的更多信息:

  • 很好的答案,马克西姆。非常感谢! (2认同)