网站访问优化,未完待续

下午,网站被吐槽了,访问太慢。
   最初,我以为是首页的banner图片,太大导致的,之前是500kb的高清图。立即去看了下,banner大图已经压缩到50kb了。

so,不是图片的问题。

用Chrome打开网站,禁用缓存,总体访问情况:
272个请求,2.68MB,耗时5.56s(load:5.03s,DOMContentLoaded:2.45s)

先找出最大的3个文件:
jquery.js 118kb ,服务器本地,而且没有压缩,耗时2.12s
layout.css 55.8kb,服务器本地,而且没有压缩,耗时1.58s
banner.jpg 53.2kb,服务器本地,压缩过的高清图片

还有很多js,都花费了1~2s。

既然访问这么慢,必须去优化喽。
先做2步:
1.jquery.js等公共js文件,用网上免费的cdn。
http://www.bootcdn.cn/ 稳定、快速、免费的开源项目的CDN服务

使用之后,耗时4.57s(load:4.03s,DOMContentLoaded:1.30s) 
节省了1s。
cdn版本的jquery大小38kb,加载需要100ms。

2.layout.css等本地js和css资源,压缩部署。
4.25(load:4.03s,DOMContentLoaded:1.30s) 
压缩之后,时间并没有减少。
受服务器的带宽和响应速度,影响比较大。
(从网上下载的一个压缩器,下载地址:http://dd2.pc6.com/xc1/JsCssZip.zip
--------------------------------------------
在尝试了前面2步之后,效果比较明显的是第1步,jquery-cdn。

在Chrome控制台,Network进一步查看,按照Time排序,又发现了一些问题:
1.piwik.js
   耗时2.12s
   piwik是一个开源的PHP统计工具,最初只使用了百度统计,后来想自己搞一套监测代码。
   哎,piwik统计和当前网站放在了同一个服务器的Apache下,带宽也是同一个,影响就比较大了。
  
2. p2p.jpg
  50kb左右的图片,耗时大多在1.7s~1.8s之间。
  图片这个问题,真心不是我的错。
  官网首页内容比较丰富,图片50kb也不是太大。

解决办法:在不升级带宽的情况下,要么去掉piwik统计,舍不得呀,去掉了怎么看统计数据。用百度统计,数据容易丢失,比如换了账号或者出了点问题。
  少用图片或者把图片压缩得更小,不现实呀。
  不但不想压缩,还想用不压缩的更清楚的图片哩。
  以后还要增加更多的图片,展示内容。
--------------------------------------------
看来,还是需要升级带宽1MB到2MB

2.55(load:2.01s,DOMContentLoaded:630ms) 
升级带宽的效果很明显,首页加载时间由4.25s到2.55s。
这也映证了前面的分析,带宽确实是一个瓶颈。

另外,还发现一个问题,服务器不够稳定,应该是Apache的问题,有的时候,“一直等待服务器响应”。
不出意外的话,应该是Apache没有响应,难道是因为工作累了么。

在本地访问的时候,Apache也非常慢,这就不太对劲了。
现在突然怀疑是mysql数据库的问题了。

mysql和服务器上的apache以及本地的Apache都不在同一个机器上,而且自己手动安装的mysql配置也很扎,不太懂mysql的性能优化等配置。难道又要花钱使用云服务器么?

本来想的是,2个小时可以把访问时间由5s压缩到2s的,现在看来是不行了。

吃饱饭,继续优化~

时间: 2024-07-28 15:03:50

网站访问优化,未完待续的相关文章

[daily][optimize] 去吃面 (python类型转换函数引申的性能优化)(未完待续)

前天,20161012,到望京面试.第四个职位,终于进了二面.好么,结果人力安排完了面试时间竟然没有通知我,也没有收到短信邀请.如果没有短信邀请门口的保安大哥是不让我进去大厦的.然后,我在11号接到了面试官直接打来的电话,问我为啥还没到,我说没人通知我我不知道呀.结果我就直接被他邀请去以访客的身份参加面试了.不知道人力的姑娘是不是认识我,且和我有仇,终于可以报复了... 然后,我终于如约到了,面试官带着我去前台登记.前台的妹子更萌...认为我是面试官,面试官是才是来面试的.我气质真的那么合吗?

听风讲MVC丶 —— 一言不合就撸码 (未完待续······)

     希望你看了此小随 可以实现自己的MVC框架     也祝所有的程序员身体健康一切安好                                                                                                                                                ——久伴深海丶默 1.什么是前端控制器(font controller).Java Web中的前端控制器是应用的门面,

关于DOM的一些总结(未完待续......)

DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.querySelector("选择器"); 通过所需的元素节点,得到我们想要的数据做运算. 实例2:伸缩二级菜单 这里主要是逻辑判断,不同的逻辑给不同的className来控制样式. 需求是:一级菜单可以都关闭,但最多只有一个能打开.(思路是,每次都将所有的一级菜单关闭,然后仅打开当前点击的元素,并

练武场之“封装、继承”攻略(未完待续)

如题: 使用继承编写Person.Student类 编写Person类: 属性有:姓名.年龄.出生日期 方法有:showInfo(); 编写Student类: 属性有:姓名.年龄.出生日期.学校 方法有:showInfo(); study(); 使用继承优化Student类. Ready Go! 第一步 Person类 1 package a; 2 //父类 3 public class Person { 4 // 为了让成员变量隐藏(封装),便于对值制定规则:否则变量会被直接赋值. 5 pri

iOS开发系统版本适配(未完待续。。。)

1.iOS9引入了新特性App Transport Security (ATS).新特性要求App内访问的网络必须使用HTTPS协议:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是强制增强数据访问安全,而且 系统 Foundation 框架下的相关网络请求,将不再默认使用 Http 等不安全的网络协议,而默认采用 TLS 1.2.简单的说,就是苹果限制了HTTP协议,如果你用的是http协议的,要处理请参考我的另一文章,iOS9网络适配 2.iOS9

javascript有用小功能总结(未完待续)

1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javascript"> function scroll() { //获取title信息. var titleInfo = document.title; //获取title第一个字符(数字.字母). //注释:字符串中第一个字符的下标是 0.如果参数 index 不在 0 与 string.length

Linux 命令个人总结====== 未完待续 个人认为比较重要

Linux 命令个人总结====== 未完待续 man [功能说明]: 查看帮助 [语法格式]: man [123456789] 命令.文件. [选项参数]: 数字"1"表示用户命令,比如"ls" 数字"2"表示系统调用 数字"3"表示C语言库函数 数字"4"表示设备或特殊文件 数字"5"表示文件格式和规则 数字"6"表示游戏及其他 数字"7"表示

C++语言体系设计哲学的一些随想(未完待续)

对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值.具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符.该类型的数据可以包含的值的范围是什么. (2)定义操作的含义 操作是严格数据类型相关的.操作表明了对了一个具有特定类型的数据,执行操作后产生什么样结果. =========================================== C++就是一个典型的静态类型语言.在C++中,无论是"数据类型"还是"操作",都分为

我的Java问题集(1)(重点、难点、疑点)未完待续...

学习Java这么久了,总算也了点笔记,一个一个字码的哟! 1.Java中的int等类型变量既然已经有默认值为0,为什么还会出现没有初始化,编译出错呢? 一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值: Boolean false Char '\u0000'(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d 如果在一个方法中定义一个变量,java不会给其分配默认值,就必须我们来给他