网站速度慢及其解决方法

: 网站速度慢 原因详解.

单从技术上讲一个成熟的网站标准一定要------安全,快速,页面内容丰满。 然而一个商业性质的网站更是要做到以上说到的这几点成算的上一个成熟的网站. 诚然一个新生的站点.如果想做到以上这些 的确是有一点的难度。在数据量少的时候 或许看不出来什么问题,但是到了数据量一定大的时候 问题就接踵而来。其中一个很重要的表现形式就是网站速度慢。

是什么问题呢?

从笔者的分析 原因大致的有下面的这么几点

程序方面:

1. 图片大小处理不当或者是没有处理。虽然图片到页面上是一个异步的过程 但是 网页上的每一张图片的要通过到服务器上下载 才可以显示到页面上的。如果 显示的图片太大或者是太过高清的话 会影响下载速度。 从而导致整个网站打开速度减慢。

2. 数据库频繁操作。对于数据库的操作过于频繁。比如一张页面上有很多东西来着不同的表 对于数据库的查询采取一张表的内容打开数据库一次 关闭数据库一次 试想 一个丰满的页面上有多少内容一共要涉及到多少表呢,5?10? 当然很多 如果用这样的方式 操作数据库的话 我想 访问量一上去就会把网站的速度托下来。

3. 数据库设计不合理。数据库对程序的支持是相当大的 如果数据库没有建立好 原本可以查询数据库一次的操作 现在要查询两次甚至是三次的话 试想这样的话 对网站的速度 影响有多大。

4. SQL 语句不够优化。 特别对于ORACLE 数据库来说 当一个新的SQL 语句来的时候 数据库将花大量的时间和资源做硬解析 当然 数据库对“新”这个词的定义是这样的 如果这条sql 比在共享池中中已经有的sql 多一个空格 ,少一个空格,大小写不同。都是定义成 新。 造成这样的罪魁祸首是 拼接sql

5. 程序混乱 架构不清晰方法重复。 一个程序结构不清晰最终导致调用 重复方法 极大的浪费资源。

6. 处理数据或者是页面的方式不正确。 用一个网站的首页来举个例子 如果没有特别的要求 一个网站的首页 每个人看到的都应该是一样的。 如果对页面没有处理 就会 假设有5千用户每一个打开首页的用户都会访问服务器端 链接5000 如果对数据没有处理 就会在到数据库中查询数据 如果这张页面对数据库的操作是2 2X5000 次对数据库的操作 这样 对数据库的压力也就上去了反之对网站的速度也会受到很大很大的影响。

硬件方面

1. 带宽

2. 内存和cup 特别是数据库服务器 如果内存不足 将直接影响到数据库的执行效率。

当然对于网站速度的问题还有很多 笔者认为以上是影响网站的根本。

二:解决方法

1.对于图片问题。我认为对图片的处理有两种方式 1. 在生成图片的时候 生成大小合适的缩略图 2.对大图用优秀的压缩软件 进行压缩 这样可以达到资源减半 但是效果无差。

2.对于数据库操作频繁的问题 我认为可以选择 一张页面查询数据库一次的方式 在前台 大多是查询的过程 一个页面有很多来自不同表的内容 在数据库查询得到有多个datatable的一个dataset 将这个dataset 提交到页面中操作。 这样就可以减少对数据库的频繁操作

3.对于数据库的设计 现在有这样的说法 就是以时间换空间。建立数据库的时候 尽量想到查询数据库的时候 要的字段 尽量放到一个表中这样查询出来 的确这样的查询时会节约很多资源。笔者持支持态度。

4.对于SQL 语句 的优化相当的重要 笔者曾经看到过 一条SQL 将一个程序堵死的现实 ,另外对于SQL刚才也有介绍到硬解析的过程 笔者建议 最好是用存储过程 或者是用参数化的SQL 这样既可以避免SQL注入 也可以最大的减少硬解析节约资源

5.给程序减肥。去掉不必要的方法 对一个长的方法就行方法重构 加上完整的注释和说明

6.对数据的处理 对数据的处理方式有很多 这里介绍两点笔者认为比较有用的方式 widows services 将查询数据库的操作写到服务中 服务器调用直接调用windows service中的内容 还有一种方式就是用xml文件的方式

7.将一张页面看成是一个对象 将这个页面的信息查询出来时将这些数据同样放到一个或者是多个xml文件中 一个页面的数据量不会太大 这样IO的压力也不会太大.

8.对页面的处理 对页面的处理 建议用缓存而且可以缓存到服务器端 无论是整页缓存还是数据缓存 都建议使用 即便是缓存的时间只有5秒钟 当访问量大的时候也会起到很到的巨大的作用。至少在5秒内可以节约出资源来分享给别的操作。

如果做到以上这几点就我想 我想网站速度会有一个质的变化!

更多相关文章

  1. 约束数据库表,以便只有一行可以在列中具有特定值
  2. 数据库截取字符串SUBSTR函数的使用
  3. 如何在不改SQL的情况下优化数据库
  4. 如何在SQL Server数据库模式中找到所有填充了100%空值的列?
  5. Oracle SQL Developer是一个与c#一起使用的好数据库吗
  6. sql 语句 更改默认的sql server 数据库
  7. VFP+SQL Server 2000怎样进行数据库备份和恢复?
  8. 自己写了一个简单的mysql数据库连接类
  9. 如何用sql语言只获得数据库当前日期,且格式为"yyyy-mm-dd"?

随机推荐

  1. 即将到来的Android(安卓)N,将具备这些新特
  2. Fast File Transfer – 让 Android 通过
  3. Android/IOS手机使用Fiddler抓包
  4. Android测试驱动开发实践1
  5. Android(安卓)studio gradle build 太慢,
  6. android项目中每个文件的作用
  7. 也谈Android的学习和利用Android来赚钱
  8. 格式化字符串android 格式化时间
  9. Android声明和使用权限
  10. Android的5层平台架构