Azure 发布的不同合并设置的权衡是什么?
What are the tradeoffs for the different merge settings for Azure publish?
当您通过 Visual Studio 发布到 Azure 时,您可以选择预编译您的页面。有很多选项可以解释它的作用,但没有关于权衡的内容。
- 为什么我不检查 'Allow [...] to be updatable'?
- 为什么要合并成一个文件?这样更快吗?它加载速度更快还是编译速度更快?
Microsoft 网站上有一些信息,但在以上几点上他们并没有真正深入研究。
https://msdn.microsoft.com/en-us/library/hh475319(v=vs.110).aspx
我发现有关这些选项的信息分散在 Microsoft 文档的不同页面上。这是我通过将所有东西放在一起发现的:
为什么我不检查 'Allow precompiled site to be updatable'?
这可能会回答您的问题:
If a compiled site is updatable, UI content can be updated without recompiling the site. When a Web site is updatable, the content files remain in their original folders and only the associated code files are merged. If the site is not updatable, .ascx, .master, and .skin content files are removed from their original folder. ASP.NET .aspx files are replaced with a marker file that has no content. UI content and code are merged in this case.
来源:https://msdn.microsoft.com/en-us/library/bb397866.aspx
一个可更新的站点存储UI内容的源文件并且不编译它。只有非 UI 代码被预编译。这使得更新网站变得非常容易,因为您可以更改一个网页的代码而无需预编译整个网站。此选项的缺点是网页无法预编译,每次用户请求页面时都会编译(减去可能发生的缓存)。这将降低页面加载的性能。
为什么要合并成一个文件?这样更快吗?它加载速度更快还是编译速度更快?
将文件合并在一起使部署更容易,因为要上传的文件更少。它还允许进行更多优化,因为编译器可以对多个网页进行批量优化。但是,在合并所有内容时,必须在每次更改时完全重新部署站点(相对于仅部署已更新的程序集)。
以下是每个选项的权衡:
将所有输出合并到一个程序集中:将所有内容合并到一个文件中使部署更容易,因为只有一个文件要上传。一切都编译在同一个包中,这允许批量优化,从而使页面加载速度更快。但是,如果网站的一部分发生变化,则必须重新上传整个网站。如果您的网站不是很大,那将是一个不错的选择。
将每个单独的文件夹输出合并到其自己的程序集中: 使部署更容易,同时避免每次更改都需要上传整个站点。只有包含更新代码的文件夹需要重新编译和重新部署。
将所有页面和控制输出合并到一个程序集中: 将所有 UI 放在同一个程序集中,而不合并与 UI 无关的代码.这使您可以更新与 UI 无关的代码,而无需重新部署 UI 代码。
不合并:代码文件被编译,但是所有UI内容没有被预编译。因此,每次用户请求页面时都会编译网页 UI(减去可能发生的缓存),这会使页面加载时间更长。但是,由于 UI 未编译,如果您需要编辑一个网页,您可以在生产服务器上上传特定文件的新版本,而无需重新编译网站的任何部分。这对于无法承受完全重新部署的大型网站来说是个好消息。
不合并。为每个页面创建一个单独的程序集,control: 将每个页面编译到它自己的程序集中。您拥有预编译代码的速度,但代价是阻止编译器对多个页面进行批量优化(页面加载时间稍长)。
有关asp.net个网站的合并和编译的更多信息:
我只是想 post 在这里,因为它可能与其他人相关。我在 Azure 的 ASP.NET Framework 4.7 运行 中有一个大型遗留项目。
我在 Azure 上“实时”编译页面时遇到了很多 问题。很多我的意思是真的很多。 IE。 this。有时我点击了一个未预编译的页面,而 Azure 似乎仅在编译时就耗尽了所有资源,导致整个应用程序崩溃。重新启动后,它花了 8 (!!) 分钟才能处理第一次命中。当地只有30秒。
在 Corona 期间,我终于有时间转向 .NET Core - 所有这些问题都立即消失了。
尽管微软表示他们将在很长一段时间内继续支持 .NET Framework,但我很清楚微软对该项目不再有任何热情。我在使用 Azure 时遇到的问题很荒谬。
我强烈建议尽快迁移。即使是一个大项目,也没有我事先想象的那么痛苦。
当您通过 Visual Studio 发布到 Azure 时,您可以选择预编译您的页面。有很多选项可以解释它的作用,但没有关于权衡的内容。
- 为什么我不检查 'Allow [...] to be updatable'?
- 为什么要合并成一个文件?这样更快吗?它加载速度更快还是编译速度更快?
Microsoft 网站上有一些信息,但在以上几点上他们并没有真正深入研究。
https://msdn.microsoft.com/en-us/library/hh475319(v=vs.110).aspx
我发现有关这些选项的信息分散在 Microsoft 文档的不同页面上。这是我通过将所有东西放在一起发现的:
为什么我不检查 'Allow precompiled site to be updatable'?
这可能会回答您的问题:
If a compiled site is updatable, UI content can be updated without recompiling the site. When a Web site is updatable, the content files remain in their original folders and only the associated code files are merged. If the site is not updatable, .ascx, .master, and .skin content files are removed from their original folder. ASP.NET .aspx files are replaced with a marker file that has no content. UI content and code are merged in this case.
来源:https://msdn.microsoft.com/en-us/library/bb397866.aspx
一个可更新的站点存储UI内容的源文件并且不编译它。只有非 UI 代码被预编译。这使得更新网站变得非常容易,因为您可以更改一个网页的代码而无需预编译整个网站。此选项的缺点是网页无法预编译,每次用户请求页面时都会编译(减去可能发生的缓存)。这将降低页面加载的性能。
为什么要合并成一个文件?这样更快吗?它加载速度更快还是编译速度更快?
将文件合并在一起使部署更容易,因为要上传的文件更少。它还允许进行更多优化,因为编译器可以对多个网页进行批量优化。但是,在合并所有内容时,必须在每次更改时完全重新部署站点(相对于仅部署已更新的程序集)。
以下是每个选项的权衡:
将所有输出合并到一个程序集中:将所有内容合并到一个文件中使部署更容易,因为只有一个文件要上传。一切都编译在同一个包中,这允许批量优化,从而使页面加载速度更快。但是,如果网站的一部分发生变化,则必须重新上传整个网站。如果您的网站不是很大,那将是一个不错的选择。
将每个单独的文件夹输出合并到其自己的程序集中: 使部署更容易,同时避免每次更改都需要上传整个站点。只有包含更新代码的文件夹需要重新编译和重新部署。
将所有页面和控制输出合并到一个程序集中: 将所有 UI 放在同一个程序集中,而不合并与 UI 无关的代码.这使您可以更新与 UI 无关的代码,而无需重新部署 UI 代码。
不合并:代码文件被编译,但是所有UI内容没有被预编译。因此,每次用户请求页面时都会编译网页 UI(减去可能发生的缓存),这会使页面加载时间更长。但是,由于 UI 未编译,如果您需要编辑一个网页,您可以在生产服务器上上传特定文件的新版本,而无需重新编译网站的任何部分。这对于无法承受完全重新部署的大型网站来说是个好消息。
不合并。为每个页面创建一个单独的程序集,control: 将每个页面编译到它自己的程序集中。您拥有预编译代码的速度,但代价是阻止编译器对多个页面进行批量优化(页面加载时间稍长)。
有关asp.net个网站的合并和编译的更多信息:
我只是想 post 在这里,因为它可能与其他人相关。我在 Azure 的 ASP.NET Framework 4.7 运行 中有一个大型遗留项目。
我在 Azure 上“实时”编译页面时遇到了很多 问题。很多我的意思是真的很多。 IE。 this。有时我点击了一个未预编译的页面,而 Azure 似乎仅在编译时就耗尽了所有资源,导致整个应用程序崩溃。重新启动后,它花了 8 (!!) 分钟才能处理第一次命中。当地只有30秒。
在 Corona 期间,我终于有时间转向 .NET Core - 所有这些问题都立即消失了。
尽管微软表示他们将在很长一段时间内继续支持 .NET Framework,但我很清楚微软对该项目不再有任何热情。我在使用 Azure 时遇到的问题很荒谬。
我强烈建议尽快迁移。即使是一个大项目,也没有我事先想象的那么痛苦。