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

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

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

西安-DB
 
最佳答案

0

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

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
|
老鸟四级
|园豆:3714
|
2012-08-23 10:20

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

支持(0)
反对(0)

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

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

支持(0)
反对(0)

回复
|
lerhe
|
园豆:200
(初学一级)
|
2013-06-09 17:00

其他回答(5)

0

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

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

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

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

支持(0)
反对(0)

回复
|
西安-DB
|
园豆:33
(初学一级)
|
2012-08-23 00:03
|

0

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

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

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

支持(0)
反对(0)

回复
|
西安-DB
|
园豆:33
(初学一级)
|
2012-08-23 23:09
|

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

支持(0)
反对(0)

回复
|
西安-DB
|
园豆:33
(初学一级)
|
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
|

 

0

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

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

 

0

asp.net mvc3 首次访问速度慢

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

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

先在点想放弃EF的想法。

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

 
回复
|
( ⊙ o ⊙ )啊!
|
园豆:202
(菜鸟二级)
|
2012-09-07 21:24
|

[转]ASP.NET MVC3 + EF 性能优化解决方案以及最优架构的更多相关文章

  1. ASP.NET26 个常用性能优化方法

    数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...

  2. EF性能优化(一)

    一:背景 说到EF的性能问题,我相信都是大家比较头痛的问题,有很多初学者望而却步,可是每每菜鸟在群里面抱怨EF太慢的时候,这个时候总有一些大牛登场说一句:怪EF咯?怪你不会用! 当然我从未嫌弃过它,因 ...

  3. Spark记录-Spark性能优化解决方案

    Spark性能优化的10大问题及其解决方案 问题1:reduce task数目不合适解决方式:需根据实际情况调节默认配置,调整方式是修改参数spark.default.parallelism.通常,r ...

  4. CSS3 动画卡顿性能优化解决方案--摘抄

    最近在开发小程序,与vue类似,它们都有生命周期这回事. onLoad 监听页面加载 onReady 监听页面初次渲染完成 onShow 监听页面显示 到底是什么意思? 所以这又触碰到了我的知识盲区, ...

  5. Web项目开发性能优化解决方案

    web开发性能优化---安全篇 1.ip验证 2.操作日志.安全日志.登录日志 3.SQL注入校验 4.权限管理 5.验证规范(前端.后端.数据库约束) 2014-10-29 08:04   2773 ...

  6. Spark性能优化:开发调优篇

    1.前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算 ...

  7. IoC~MVC3+EF+Autofac实现松耦合的系统架构

    MVC3+EF+Autofac网上这种文章确实没有,呵呵,今天就写一个,代大家分享! 这个系列的文章将带我们进入一种新的开发模式,注入开发模式,或者叫它IOC模式,说起IOC你可以这样去理解它,它为你 ...

  8. 性能优化之MySQL调优篇

    MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰.在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作 ...

  9. EF性能优化-有人说EF性能低,我想说:EF确实不如ADO.NET

    十年河东,十年河西,莫欺少年穷. EF就如同那个少年,ADO.NET则是一位壮年.毕竟ADO.NET出生在EF之前,而EF所走的路属于应用ADO.NET. 也就是说:你所写的LINQ查询,最后还是要转 ...

随机推荐

  1. 关于SAP的事务提交和回滚(LUW)

    1 Sap的更新的类型 在sap中,可以使用CALL FUNCTION ... IN UPDATE TASK将多个数据更新绑定到一个database LUW中.程序使用COMMIT WORK提交修改请 ...

  2. sharepoint2010问卷调查(3)-实现问卷的开始和结束时间(采用自定义字段类型)

    接着上面的图片调查,sharepoint自带的问卷调查是没有开始和结束时间的.这个在项目过程不太实用.问卷一般有开始和结束时间的.因此需要自己 动手开发一个自定义字段类型字段.如下图: 开发添加栏目会 ...

  3. yum源的配置(centos6.5)

    # cd /etc/yum.repos.d/ # mv CentOS-Base.repo CentOS-Base.repo.bak # wget http://mirrors.163.com/.hel ...

  4. cacti监控windows服务器

    参考文献: 通​过​C​a​c​t​i​监​控​w​i​n​d​o​w​s​资​源 前提条件 一.已安装好Cacti:ubuntu下cacti安装配置 二.准备好以下安装文件: Cacti_SNMP_ ...

  5. 操作系统开发系列—12.f.在内核中添加中断处理 ●

    因为CPU只有一个,同一时刻要么是客户进程在运行,要么是操作系统在运行,如果实现进程,需要一种控制权转换机制,这种机制便是中断. 要做的工作有两项:设置8259A和建立IDT. /*========= ...

  6. net2.0对于递归变量的处理方式不同引发的递归问题

    同样的代码,用NET2.0执行产生的效果与其它框架使用的不同,导致报错. 认真查找原因后发现该程序的编写人员隐式的使用了一个公共变量,使之在递归过程中不断的被改写,使得1次递归后就破坏了原来的循环体, ...

  7. C文件编译、链接指令

    通过mac终端 输入指令: cc -c 文件名.c 可以把C文件编译成.o文件(其实是2进制文件) 然后通过指令 cc 文件名.o 把.o文件链接C文件所需要的C语言的底层库,成为可以直接运行的lin ...

  8. web项目修改名称问题

    第一步:鼠标点击项目按F2 ,然后修改名称 第二步:备份web.xml 第三步:鼠标点击项目右键  选properties(一般位于最后面)  再在弹出框中输入WEB 第四步:将备份的web.xml文 ...

  9. JavaScript Patterns 6.3 Klass

    Commonalities • There’s a convention on how to name a method, which is to be considered the construc ...

  10. JavaScript Patterns 6.1 Classical Versus Modern Inheritance Patterns

    In Java you could do something like: Person adam = new Person(); In JavaScript you would do: var ada ...