首页 新闻 会员 周边 捐助

ASP.NET MVC3 + EF 性能优化解决方案以及最优架构

1
悬赏园豆:20 [已解决问题] 解决于 2012-08-25 14:53

我们用 asp.net mvc3 + ef 做了一个网站,现在是内测阶段,发现打开速度非常慢。首页打开(无缓存)都在5-6s以上(测试环境:程序和db都在本机),请问各位 mvc3+ef 比较适合大多数项目的架构是怎么样子,能否给个截图说明各个项目的意思。

另:各位用 mvc3 ef 开发的网站性能究竟如何,怎么优化呢??

第一次用 ef ,第一个项目用 mvc,无从下手!

西安-DB的主页 西安-DB | 初学一级 | 园豆:4
提问于:2012-08-22 22:42
< >
分享
最佳答案
1

首次启动是会很慢,后面再打开页面的时候就快了。

1.对常用数据进行缓存。

2.在编写程序的时候避免不必要的分层,不合理的分层也会影响到性能。

3.你发布到外网上去,然后把地址告诉我们,我们来看看,哈哈。

4.将JS写成公用的,并放到单独的js文件中。

   如果不是必须要加载时才执行js,建议将 js 放置在页面尾部。

5.减少aspx 设计页面中不必要的注释,将不用的控制都删除。

  尽量多使用HTML控制,少使用服务器控件。

6.合理的配合使用Ajax,可以提升用户体验。

7.优化数据库,对频繁使用的表加索引。

8.我还是缓存,其实我上面有说到过,在此再强调一下。

9.常用的查询语句最好做做成存储过程,EF是可以调用存储过程的。还有可以做视图,EF了同样支持对视图的处理。

10.对于复杂的业务,比如5个表以上的关联查询,建议用sql来实现,EF在多表关联方面,会生成非常复杂的Sql语句,虽然生成的语句也不差,但是相比咱自己写的,我觉得自己写的还更好些。(强调,我是说的极多表关联的时候)

收获园豆:15
jerry-Tom | 老鸟四级 |园豆:4077 | 2012-08-23 10:20

谢谢给的这些建议,目前在逐一排查。

西安-DB | 园豆:4 (初学一级) | 2012-08-23 23:08

@西安-DB: 哥们这个问题最终是如何解决的 我也遇到了

lerhe | 园豆:200 (初学一级) | 2013-06-09 17:00
其他回答(5)
0

只是首次启动慢还是每次打开首页都慢?

首次慢正常,每次打开首页都慢那就得看你的场景和代码了。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-22 22:49

每次都慢。。定义 viewModel 组合 view需要的数据 在view中展示,我一度怀疑我ef代码写的有问题,不过查来查去,看不出什么问题,甚至 在读取列表的时候,我都选择读取部分字段数据而不是全部数据。

支持(0) 反对(0) 西安-DB | 园豆:4 (初学一级) | 2012-08-23 00:03
0

你的问题恐怕还没到架构的层面,你首先得从你的首页的流程开始分析整个加载过程,哪些部分占用了多少时间。

Launcher | 园豆:45050 (高人七级) | 2012-08-23 09:04

嗯,提到架构只是个题外话,想要调整下项目结构,因为现在  ef 底层数据访问都是直接写在控制器里的,代码几千行,吓死个人呐。

支持(0) 反对(0) 西安-DB | 园豆:4 (初学一级) | 2012-08-23 23:09

嗯,我说的是 同一个控制器下 如果有 N多个 actionResult 的话,代码行数会比较多。

支持(0) 反对(0) 西安-DB | 园豆:4 (初学一级) | 2012-08-23 23:10
0

方法一:

1.完全不可以不读取数据,直接打开页面,看看快不快

2.然后读取一个非常简单的表,看看快不快

3.用的viewModel读取,看看速度,同时打开sql profile,看看view的执行效率

方法二:

直接用sql profile看那些sql执行较慢,特别是你使用proceduce , view后。

收获园豆:5
无尽思绪 | 园豆:94 (初学一级) | 2012-08-23 09:05
1

不是很会ef,但是ef应该有个初始化过程,应该写在application_start就可以了,会不会是每次request action都执行初始化呢?

沉默的糕点 | 园豆:1786 (小虾三级) | 2012-08-24 10:49
1

asp.net mvc3 首次访问速度慢

第一:iis会定时释放已加载的类库。类库被释放后再次加载需要时间。

第二:EF首次访问速度确实比较慢!楼主可以随便写两个ADO.NET 的数据连接对比一下。

先在点想放弃EF的想法。

楼主有什么高见请随时贴出来,让我们学习一下!

( ⊙ o ⊙ )啊! | 园豆:202 (菜鸟二级) | 2012-09-07 21:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册