如果有大型 Web 应用程序,可考虑执行预批编译
来源:互联网 发布:mac版qq有远程协助吗 编辑:程序博客网 时间:2024/05/26 19:14
每当发生对目录的第一次请求时都会执行批编译。如果目录中的页面没有被分析并编译,此功能会成批分析并编译目录中的所有页面,以便更好地利用磁盘和内存。如果这需要很长时间,则将快速分析并编译单个页面,以便请求能被处理。此功能带给 ASP.NET 性能上的好处,因为它将许多页面编译为单个程序集。从已加载的程序集访问一页比每页加载新的程序集要快。
批编译的缺点在于:如果服务器接收到许多对尚未编译的页面的请求,那么当 Web 服务器分析并编译它们时,性能可能较差。为解决这个问题,可以执行预批编译。为此,只需在应用程序激活之前向它请求一个页面,无论哪页均可。然后,当用户首次访问您的站点时,页面及其程序集将已被编译。
批编译的缺点在于:如果服务器接收到许多对尚未编译的页面的请求,那么当 Web 服务器分析并编译它们时,性能可能较差。为解决这个问题,可以执行预批编译。为此,只需在应用程序激活之前向它请求一个页面,无论哪页均可。然后,当用户首次访问您的站点时,页面及其程序集将已被编译。
没有简单的机制可以知道批编译何时发生。需一直等到 CPU 空闲或者没有更多的编译器进程(例如 csc.exe(C# 编译器)或 vbc.exe(Visual Basic 编译器))启动。
还应尽量避免更改应用程序的 /bin 目录中的程序集。更改页面会导致重新分析和编译该页,而替换 /bin 目录中的程序集则会导致完全重新批编译该目录。
在包含许多页面的大规模站点上,更好的办法可能是根据计划替换页面或程序集的频繁程度来设计不同的目录结构。不常更改的页面可以存储在同一目录中并在特定的时间进行预批编译。经常更改的页面应在它们自己的目录中(每个目录最多几百页)以便快速编译。
Web 应用程序可以包含许多子目录。批编译发生在目录级,而不是应用程序级。
- 如果有大型 Web 应用程序,可考虑执行预批编译
- 一个应用程序 如果要执行
- web运维的可扩展性考虑
- web应用程序的SqlServer的安全考虑
- 如果有来世,渡我,可愿?
- mctemplate大型WEB应用程序的模板引擎
- 测试Web应用程序的需要考虑的基本事项
- 2014-03-31工作日志:如果一个工作区中有多个工程,有编译也有执行,则应经常设置好切换
- 如果程序需要创建大量的线程,要考虑用 root 用户执行这个程序。
- web应用的可靠性、高性能、可伸缩、可扩展、可迁移 如果保证!
- 如果实现python字典的只读, 考虑字典内容有list, dict的嵌套问题
- Flask Web Development —— 大型应用程序结构(上)
- Flask Web Development —— 大型应用程序结构(下)
- 在Web应用程序中执行多线程
- 在Web应用程序中执行计划任务
- 在Web应用程序中执行多线程
- VS编译出具有管理员权限的应用程序
- 如果能有“如果”
- 只在必要时保存服务器控件视图状态
- 使用 HttpResponse.Write 方法进行字符串串联
- 除非有特殊的原因要关闭缓冲,否则使其保持打开
- 不要依赖代码中的异常
- 适当地使用公共语言运行库的垃圾回收器和自动内存管理
- 如果有大型 Web 应用程序,可考虑执行预批编译
- 必要时调整应用程序每个辅助进程的线程数
- 使用 HttpServerUtility.Transfer 方法在同一应用程序的页面间重定向
- 使请求管线内的所有模块尽可能高效
- 在 Visual Basic .NET 或 JScript 代码中使用早期绑定
- 将调用密集型的 COM 组件迁移到托管代码
- 避免单线程单元 (STA) COM 组件
- 将 SQL Server 存储过程用于数据访问
- 将 SqlDataReader 类用于快速只进数据游标