如何加快首页访问速度

blackeye2004 2014-09-14 05:11:28
我用asp.net mvc5.0 + ef6.0 +mysql,做了一个网站,首页里需要16条SQL查询语句,发现第一次打开的速度超慢,将近10秒左右,即使我设置了缓存,也没什么用。
这种情况下,是不是要把SQL查询都改成存储过程啊?
...全文
335 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
myhope88 2014-09-16
  • 打赏
  • 举报
回复
静态化看一下,再者优化你的sql语句
WM_JAWIN 2014-09-16
  • 打赏
  • 举报
回复
最简单,最有好的办法,就是生成静态文件。如果包含了一些特定的用户信息,可以用ajax加载替换提部分区域
缪军 2014-09-16
  • 打赏
  • 举报
回复
引用 10 楼 CityBird 的回复:
如果没有aspx文件,就不需要动态编译了, 如果是早期的.net版本,打包发布的网站,其aspx文件只不过是白纸空壳,没有任何代码, 如果是3.5以后的版本,可以直接用路由机制从设计阶段就消灭几乎所有的aspx文件,连代码都不需要写了,
三楼の郎 2014-09-16
  • 打赏
  • 举报
回复
微软的应用程序池,如果长时间闲置的话,会进行回收,以节省服务器资源。默认闲置时间是20分钟,只要把这个时间调大一点就好了。 IIS7.5+.net4.0针对这个问题还有一个解决方案,就是使用startmode="alwaysrunning"这种方式,从IIS启动之后就开始了这个Application,无论是否有人访问,一直运行 传说这个方法可行,没试过
blackeye2004 2014-09-16
  • 打赏
  • 举报
回复
引用 17 楼 CityBird 的回复:
[quote=引用 16 楼 blackeye2004 的回复:] 是啊,你也说了是对同一页面进行缓存,事实上我也设置了缓存。可我打开的是两个毫不相干的页面,如果建缓存的话,那打开两个页面的时候都要建吧。
此缓存非彼缓存,我说的缓存是.net为了提高请求效率而建立的属于.net的内部机制,这和你在程序里设置的缓存完全就是两个不同的东西,你可以打开 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 目录看看,v2.0.5072是.net framework版本,不同的版本名字会不一样。 [/quote] 这个缓存有时间限制的吧?我发现我的站隔几个小时就会这样,在哪里设置缓存时长?
三楼の郎 2014-09-16
  • 打赏
  • 举报
回复
引用 16 楼 blackeye2004 的回复:
是啊,你也说了是对同一页面进行缓存,事实上我也设置了缓存。可我打开的是两个毫不相干的页面,如果建缓存的话,那打开两个页面的时候都要建吧。
此缓存非彼缓存,我说的缓存是.net为了提高请求效率而建立的属于.net的内部机制,这和你在程序里设置的缓存完全就是两个不同的东西,你可以打开 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 目录看看,v2.0.5072是.net framework版本,不同的版本名字会不一样。
blackeye2004 2014-09-16
  • 打赏
  • 举报
回复
引用 15 楼 CityBird 的回复:
[quote=引用 14 楼 blackeye2004 的回复:] 我是发布到IIS7.5上面的,也没有任何ASPX文件,反正在打开任何一个页面之后,再打开其他页面就很快了,这个跟预编译有关系吗?我感觉跟IIS的配置有关系
我想10楼“第一次编译页和代码文件之后,会缓存编译后的资源,这样将大大提高随后对同一页提出的请求的效率。”这句话已经表述的很清楚了,不管你有没有aspx文件,不管存不存在预编译的问题,.Net为了提高随后对同一页提出的请求效率都会吧编译后的资源进行缓存,而这个缓存操作是在首次请求的时候进行的,所以首次请求的时候存在一个建缓存的时间,后续请求都是从缓存输出的,当然首次要比后续的访问慢了。[/quote] 是啊,你也说了是对同一页面进行缓存,事实上我也设置了缓存。可我打开的是两个毫不相干的页面,如果建缓存的话,那打开两个页面的时候都要建吧。
三楼の郎 2014-09-16
  • 打赏
  • 举报
回复
引用 14 楼 blackeye2004 的回复:
我是发布到IIS7.5上面的,也没有任何ASPX文件,反正在打开任何一个页面之后,再打开其他页面就很快了,这个跟预编译有关系吗?我感觉跟IIS的配置有关系
我想10楼“第一次编译页和代码文件之后,会缓存编译后的资源,这样将大大提高随后对同一页提出的请求的效率。”这句话已经表述的很清楚了,不管你有没有aspx文件,不管存不存在预编译的问题,.Net为了提高随后对同一页提出的请求效率都会吧编译后的资源进行缓存,而这个缓存操作是在首次请求的时候进行的,所以首次请求的时候存在一个建缓存的时间,后续请求都是从缓存输出的,当然首次要比后续的访问慢了。
blackeye2004 2014-09-16
  • 打赏
  • 举报
回复
我是发布到IIS7.5上面的,也没有任何ASPX文件,反正在打开任何一个页面之后,再打开其他页面就很快了,这个跟预编译有关系吗?我感觉跟IIS的配置有关系
三楼の郎 2014-09-15
  • 打赏
  • 举报
回复
默认情况下,当用户首次请求资源(如网站的一个 ASP.NET 页(.aspx 文件))时,将动态编译 ASP.NET 网页和代码文件。 第一次编译页和代码文件之后,会缓存编译后的资源,这样将大大提高随后对同一页提出的请求的效率。 ASP.NET 支持动态编译 ASP.NET 页(.aspx 文件)、ASP.NET Web 服务(.asmx 文件)、ASP.NET HTTP 处理程序(.ashx 文件)和 ASP.NET 应用程序文件 (Global.asax) 以及其他文件,例如源代码和类文件。 有关 ASP.NET 文件类型的更多信息,请参见ASP.NET Web 项目文件类型。 有关 ASP.NET 编译进程的更多信息,请参见 IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述的“编译生命周期”一节。 详情参见:http://msdn.microsoft.com/zh-cn/library/ms366723.aspx
qzyf1992 2014-09-15
  • 打赏
  • 举报
回复
当然我只是说绝大可能,你可以用在数据库管理器里执行下你的sql语句看看所用时间
qzyf1992 2014-09-15
  • 打赏
  • 举报
回复
很明显 你是由于sql语句执行所用时间过长所致。在合适的字段添加索引。对数据库字段类型做二次重构。避免书签查询,用存储过程是解决不了根本问题的
blackeye2004 2014-09-15
  • 打赏
  • 举报
回复
我还发现一个问题,只要是第一次打开网站的某个页面,就会出现这种情况,第二次再打开任何一个页面,就会快很多,这个似乎跟IIS有关系吧?
shoppingli 2014-09-15
  • 打赏
  • 举报
回复
第一,先检查sql语句有没有做好优化,再看表里面有没做索引,这个可以做单独查询去测试,这东西不是做成存储过程速度就要加快的。 第二,如果sql无问题,自己检查一下代码,也许是自己写的代码使得网站变慢。 第三,可以检查一下是否有网络问题,这个的可能性会比较低
三楼の郎 2014-09-14
  • 打赏
  • 举报
回复
局部静态,把你查询量最多速度最慢的部分改成后台操作时直接生成成静态html片段,需要用到的地方直接包含下就好了
  • 打赏
  • 举报
回复
不要翻来覆去跟回答你问题的人纠结“存储过程”这四个字,你自己写个测试不就知道能加快多少速度了吗?!既然你满脑子都是这四个字,而这个东西又是这么简单和初级,你应该不出一顿饭功夫就自己贴出测试数据来说明速度问题了。 等你能够自己动手给出测试结果,再讨论这类问题,你才能比较头脑清醒。
  • 打赏
  • 举报
回复
当你对“存储过程”这四个字着魔时,你是什么都不理解了。
blackeye2004 2014-09-14
  • 打赏
  • 举报
回复
引用 1 楼 stupid_boy2007 的回复:
首页生成静态页面最好。
你存储过程用得多吗
庚武讲堂 2014-09-14
  • 打赏
  • 举报
回复
首页生成静态页面最好。

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧