社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 银行

  • 7013阅读
  • 4回复

优化WordPress系统的建议

级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0

记忆中刚开始做seo的时候很多人都在用zblog程序,作为asp博客程序里面的主流程序,zblog可谓是风光一时,直到现在仍然有很多的追随者,但是今天我和大家谈谈另外一款博客系统WordPress的seo优化注意事项。
  1,首先无论是哪一款程序,无论是做什么类型的网站,有内容,勤更新是做seo的主要手段,如果不能勤更新内容,不去更新一些高质量的内容,其他的全是空谈,所以第一步就是经常更新blog的文章,记得是更新文章而不是天天换主题,搜索引擎不识别你的主题。
  2,调整网站的结构,wp的网站结构还是很合理的,但是为了用户体验,建议修改下右侧栏。把那些用户关注的东西和用户经常点击的放在前面,比如如 Pages、Categories 及 recent comments;把一些用户不会点击的栏目放到后面,如 Archives、Link、Meta。
  3,页面标题的优化,在我们设置标题的时候正确的格式是文章名+网站的名字,这主要是因为搜索引擎的索引结果出现的标题字数有一定的限制,如果把blog标题的名字放在前面,就可能会因为标题过长而被隐藏,导致用户体验下降,这里的设置只需要修改下模板的header.php文件就可以。
  4,防止垃圾留言,最近在使用wp博客的时候经常会看到很多的垃圾留言,无奈之下直接将留言板关闭,当然wp对垃圾留言有过滤的插件比如Akismet。同时建议对留言里面的链接设置nofollow属性,这样就不会让网站权重流失。
  5,给博客分页。WordPress固然有很强大的功能,但是也有不足的地方,比如一次只能翻一个页面,或上一页或下一页。如果你的页面有很多就会被隐藏的很深,这里建议使用分页插件PageNavi。
  6,给自己的网站建立大量的反向链接。反向链接决定了你网站的权重,前期我们可以在一些免费博客或者论坛上留下我们的链接,等到网站有一定权重之后去和同行业去交换友情链接,烟台网站建设小民不建议您使用留垃圾链接的方式来增加自己的反向链接,如果有能力可以去开发一套wp的主题,然后留上自己的链接。不要去和自己不相关的博客交换链接。
  7,制作Sitemap,通过 Google 网站管理员工具向 Google 提交网站地图 Sitemap,可以使网站的内容完全被收录,包括那些隐藏比较深的页面。这是一种网站与搜索引擎对话的好方式。
  我用到了一款名叫“Google XML Sitemaps”的插件。该插件使用方法很简单。下载后即上传到插件文件夹,然后到后台激活,再到 Setting =》 XML-Sitemap 页面进行设置。接着就去 Google Webmaster Tools 提交你的 Sitemap。如果你还没有在 Google Webmaster Tools 拥有一个账户,你需要去注册一个,那里会提示你怎么做的。
  8,最后是robots.txt文件的设置,但是不建议使用,因为生效时间太长,建议在站内使用nofollow处理,不让权重流失即可。
关键词: 优化 wordpress
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 沙发  发表于: 2012-04-25
创建每天10万点击率的WordPress服务器
这些命令很长,但是希望可以让你很容易按照步骤创建一个全新的Linux服务器,使用Varnish, Nginx, W3 Total Cache, and WordPress来搭建一个WordPress博客并运行在亚马逊微型服务器(或其它类似服务),所有这些只需要花费每月$15,能维持每天10万的点击率,通过blitz.io测试。


教你创建可以维持每天10万点击率的WordPress博客服务器,每月只需$15


在一个新的虚拟专用服务器上安装Ubuntu 11.10 (Oneiric),11.10版本能够提供我们需要的所有软件包,用其他Linux发行版也是一样可以的。


我用亚马逊EC2来搭建测试服务器,不过Linode也很不错。下面是我的服务器详细信息,你的可能会有所不同:


1
DNS:ec2-23-20-235-223.compute-1.amazonaws.com
2
IP:23.20.235.223
使用root登录到服务器


通过ssh连接并登陆到ubuntu,然后执行sudo -i命令切换到root


1
ssh ubuntu@ec2-23-20-235-223.compute-1.amazonaws.com
2
sudo –i
配置防火墙


因为我们要安装各种不同的默认监听所有接口的网络服务,配置一个防火墙是很重要的。


在Ubuntu下,这是很简单的事,只要使用ufw就可以了。执行下面的命令来配置:


1
ufw allow ssh
2
ufw allow http
3
ufw logging off
4
ufw enable
执行完毕后,你的服务器就有了一个相对较安全的防火墙,你还可以使用fail2ban来防止暴力密码攻击。


安装和配置MySQL


1
apt-get update
2
apt-get install mysql-server
完成后,设置mysql的root用户密码


1
mysql -u root –p
然后,在mysql>提示符下输入新设置的root密码,执行下面4条命令,把ENTER_A_PASSWORD替换成你自己的密码


1
CREATE DATABASE wordpress;
2
GRANT ALL PRIVILEGES ON wordpress.* TO "wp_user"@"localhost" IDENTIFIED BY "ENTER_A_PASSWORD";
3
FLUSH PRIVILEGES;
4
EXIT
现在MySQL的安装完成,可以继续安装PHP和Web服务器了。


安装和配置PHP


我们不仅需要安装PHP,还要安装PHP FPM系统、APC和MySQL模块


1
apt-get install php5-fpm php-pear php5-common php5-mysql php-apc
编辑/etc/php5/fpm/php.ini并在最后添加这些内容:


1
[apc]
2
apc.write_lock = 1
3
apc.slam_defense = 0
编辑/etc/php5/fpm/pool.d/www.conf


替换


1
listen = 127.0.0.1:9000



1
listen = /dev/shm/php-fpm-www.sock
再在下面插入这3行


1
listen.owner = nginx
2
listen.group = nginx
3
listen.mode = 0660
然后,在这个文件再下面一点,替换这2行
1
user = www-data
2
group = www-data

1
user = nginx
2
group = nginx
保存文件,PHP FPM现在配置好了,但是得安装nginx之后它才能运行。
安装和配置Nginx


根据Nginx website上的方法


下载nginx安全密钥来验证包


1
cd /tmp/
2
wget http://nginx.org/keys/nginx_signing.key
3
apt-key add /tmp/nginx_signing.key
执行下面的命令添加软件源(要使用>>):


1
echo "deb http://nginx.org/packages/ubuntu/ lucid nginx" >> /etc/apt/sources.list
2
echo "deb-src http://nginx.org/packages/ubuntu/ lucid nginx" >> /etc/apt/sources.list
下载和安装nginx


1
apt-get update
2
apt-get install nginx
完成后,我们配置它来适应WordPress:


首先,编辑/etc/nginx/nginx.conf


在http节点内插入下面一行


1
port_in_redirect off;
然后,切换到/etc/nginx/conf.d目录并创建文件/etc/nginx/conf.d/drop


内容为drop file from GitHub里的


再替换/etc/nginx/conf.d/default.conf的内容为github default.conf file的内容,把所有domainname.com改为你自己的域名(有3处,包括一个在文件底部附近)


创建目录/var/www/,并设置它的所有者


1
mkdir -p /var/www/
2
chown nginx:nginx /var/www/
3
chmod 775 /var/www
现在nginx就配置好了,执行下面命令重启nginx和PHP FPM服务:


1
service nginx restart
2
service php5-fpm restart
现在,你可以安装WordPress了!


很简单,只需要执行:


1
cd /tmp
2
wget http://wordpress.org/latest.tar.gz
3
tar zxvf latest.tar.gz
4
cd wordpress
5
mv * /var/www/
6
chown -R nginx:nginx /var/www
配置WordPress,执行:


1
cp /var/www/wp-config-sample.php /var/www/wp-config.php
2
chown nginx:nginx /var/www/wp-config.php
使用浏览器打开https://api.wordpress.org/secret-key/1.1/salt/并复制页面内容


编辑/var/www/wp-config.php


把AUTH_KEY和NONCE_SALT之间的内容替换成你刚从api.wordpress.org复制的内容


然后,替换默认值为你前面设置的(不是root用户):


1
define(‘DB_NAME’, ‘database_name_here’);
2
define(‘DB_USER’, ‘username_here’);
3
define(‘DB_PASSWORD’, ‘password_here’);
做完了这些,如果你没有收到任何错误并且你的域名指向了正确的IP地址(这是很重要的),你就可以打开 http://www.domainname.com/install.php进行WordPress的配置了。
回答安装过程中的问题,设置一个靠谱的用户名和密码(强烈推荐把管理员的用户名从admin改为其它的)


在设置页面选择永久链接,并选择“Custom Structure”,粘贴下面的值(包括%符号)


1
/%post_id%/%postname%
然后猛击“Save Changes”


现在可以发表博文了,点击”Posts”然后“Add New”


输入标题和内容,点击“Post”,并注意它的网址是友好的。


运行ablitz.io测试来看看我们的成果


100用户,60秒。超时,低点击率,错误等。CPU性能似乎是现在的瓶颈。


这次测试在1分钟内有632次成功点击并从你的应用那里传输了1.76M的数据。平均每秒9.81次点击大约折合每天847,776次点击。


很大的问题是:34.91%的用户在这次测试中遇到了超时或错误。


所以,服务器虽然成功运行了,但访问速度还是太慢了!


下面,我们来启用WordPress的缓存系统


打开WordPress的管理页面-插件-安装新插件。搜索“W3 Total Cache”,安装并激活这个插件。


在页面左边大的菜单里打开新的“Performance”选项,在每个有“PHP APC”的缓存选项中激活下面2个选项:


1
Database Cache
2
Object Cache
点击“Save All Settings”,然后点击“Deploy”
再回到ablitz.io测试,表现应该会好很多


这次测试在1分钟内有2902次成功点击并从你的应用那里传输了27.59M的数据。平均每秒46次点击大约折合每天4,006,008次点击。


如果我们把blitz.io中测试的用户数从100上升到250,问题又来了:


这次测试在1分钟内有4733次成功点击并从你的应用那里传输了36.20M的数据。平均每秒72次点击大约折合每天6,297,653次点击。


这次的问题是:5.49%的用户在这次测试中遇到了超时或错误!


你可以在Nginx And APC configuration in this PDF查看Blitz结果


还是不太理想?可以安装varnish 3了!


1
apt-get install varnish
编辑/etc/varnish/default.vcl 用里default.vcl file from github的内容替换它的内容


编辑/etc/default/varnish


把下面的内容


1
DAEMON_OPTS="-a :6081 \
2
-T localhost:6082 \
3
-f /etc/varnish/default.vcl \
4
-S /etc/varnish/secret \
5
-s malloc,256m"
改为
1
DAEMON_OPTS="-a :80 \
2
-T localhost:6082 \
3
-f /etc/varnish/default.vcl \
4
-S /etc/varnish/secret \
5
-s malloc,64m"
然后,我们需要编辑nginx的配置文件让它监听8080而不是80端口,Varnish替代了它来监听80端口。
编辑/etc/nginx/conf.d/default.conf


并替换


1
listen 80;

1
listen 8080;
保存文件,再执行:


1
<strong>service nginx restart
2
service varnish restart</strong>
再次使用100用户运行blitz.io测试
基本上没有CPU使用率,性能大大改善。


这次测试在1分钟内有2959次成功点击并从你的应用那里传输了28.36M的数据。平均每秒47次点击大约折合每天4,093,000次点击。


再次使用250用户运行blitz.io测试


这次测试在1分钟内有7342次成功点击并从你的应用那里传输了70.38M的数据。平均每秒117次点击大约折合每天10,134,627次点击。


你可以在full final run blitz performance details in this PDF查看具体细节。


这就是使用每月少于$20的服务器创建每天可以维持10万点击率的WordPress博客的过程,全归功于varnish和nginx,就是这么简单!
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 板凳  发表于: 2012-05-09
WordPress 性能优化和加速
建立这个WordPress博客时间并不长,但是可以说一直在尽力优化网站性能,加快页面的载入速度。几个月下来,靠身体力行并汲取了很多牛人的经验,自己对其也算有一点了浅薄的认识,所以做出一个初级的一个性能优化文章。
针对WordPress,可以把影响WordPress速度的因素归结为三点(单击小标题可直接跳转至该内容):
服务器端:一般就是指服务器进行MySQL数据库查询和将PHP解析为HTML的时间。
网络传输:服务器端与用户客户端之间传送数据的时间。
客户端:即浏览器解析HTML文件,渲染页面和执行JS脚本的效率、客户端的缓存、页面的CPU和内存占用等。
上面分的三类,往往都是互相关联的,许多优化方法,能归到以上三个分类的任意分类中。这里也只是简单的介绍一下优化的方法,使用分类会更加清晰一些。
用户打开某一页面的时间基本等于:服务器端时间+网络传输时间+页面解析和渲染时间(此项几乎可以忽略不计)
所以正文就以这三个因素分别说明其加速原理和实现,在此之前先介绍Firefox的三个扩展:
FireBug对于网络传输的监控和HTML、JS脚本的查看功能十分强大。
Yslow与PageSpeed,这两个扩展对影响页面速度的因素分析和评价十分详细,并且给出了比较完整的解决方案。
使用上述三个插件,便可以对自己网页的性能和可优化之处有比较全面的了解。
服务器端:
服务器端的主要任务就是将动态网页PHP解析为静态的HTML文件,并将它传输到客户端。在解析的过程中,还需要向MySQL查询数据。影响服务器端的,主要有以下几点因素:
服务器的性能:服务器的性能越强大,共享用户越少或者给用户分配的资源越多,则可以认为服务器的性能强大,这样PHP文件的解析速度或者说页面生成速度就越快。建议:购买性能更加强大的虚拟空间,或者VPS,甚至是独立服务器,但是相应的成本提升巨大。
实现难度:☆或★★★★★ ,加速效果:★☆
PHP页面源代码:页面越简单,则生成的速度就越快。
复杂程度:以博客首页为例,显示50篇文章与5篇文章,在数据库查询和页面生成速度上的差距是显而易见的,页面中放入了太多的元素不仅影响了页面的生成与传输速度,也容易对用户的体验有负面的影响。建议:将每页的文章数量设定在一个比较合理的数量上,并合理使用more标签。
实现难度:☆ ,加速效果:★★★
去除或修改不必要代码:大多数主题为保证主题的通用性,采用了许多获取信息的函数,但是一般情况下,大多数用户并不会将自己的主题发布,而是直接在现有的主题上加以修改。以本博客为例,主题header.php中有:
1
2
3
4
5
6
7
8
9
10
11
12
13
<title>
<?php wp_title('|', true, 'right'); ?>
<?php bloginfo('name'); ?>
</title>
//既然博客的名称和地址除特殊情况下都不会有变动,那为何不使用纯HTML代码来代替PHP语句呢?,所以改为:
<title>
<?php wp_title('|', true, 'right'); ?>
企鹅君s  Blog
</title>
//再比如
<?php if($blogOption['top_sns_twitter']!=''){ ?><li><a href="<?php echo $blogOption['top_sns_twitter'];?>" class="twitter" title="Follow我的Twitter" target="_blank">Twitter</a></li><?php } ?>
//如果打算长期显示,就不必让服务器再去数据库中查询是否开启该图标和其地址了。
<li><a class="twitter" title="Follow我的Twitter" href="http://twitter.com/neverweep" target="_blank">Twitter</a></li>
大多数情况下,header.php、index.php等等中都有这样可以替换的代码,如字符集声明,feed地址等,可以根据自己的需要和主题进行替换。 此外,主题中有"_e"的地方,都可以直接将该语句替换成中文,可以避免读取语言包的时间。
建议:尽量去除不必要的PHP语句,比如某些判断语句是否必要,某些PHP语句是否可以用其它纯HTML的方法实现等等。这些都可以减少微量的MySQL查询和页面生成时间。
实现难度:★★ ,加速效果:★
插件:插件自身的性能表现和插件数量的多少,都影响着页面的生成速度。
比较相同功能的插件,从中选取性能表现较优的插件。以博客的最近评论插件为例,为实现ajax评论,我测试了两款基于ajax的最近评论插件,mg12的最近评论要比qiqiboy的功能更强大的RC reply ajax的数据库查询次数要少一倍还多。
剔除不必要的插件,安装一些非常酷炫的插件是否有必要?尽量删除对于博客和用户没有太大价值的插件来换取速度上的提高是值得的。
用纯代码方式替代插件实现功能。以WP-codebox为例,这个插件的功能是将文章中特定标签内的代码高亮,使代码可读性明显增强。但是每次都将无格式文本代码生成为具有丰富表现力的HTML代码是需要占用大量资源的,所以不妨临时开启wp-codebox,再查看网页源码,将格式化过的代码的HTML替换到正文中,再关闭wp-codebox,这样做即可一劳永逸的使某篇文章实现“静态化”,大大降低了该文章页面的生成时间。此外,用willin大师的小墙替代akismet等等方法都可以降低插件的使用数量。
实现难度:★★★ ,加速效果:★★★★
缓存: 采用各种缓存插件,可以显著减少服务器端占用的时间。
页面缓存:推荐WP super cache或Hyper Cache,其原理就是将PHP页面静态化为HTML,这样访客所获取的页面几乎不再需要服务器处理,基本将服务器端时间消除了。但是这种缓存插件对于页面也有某些不利的影响,比如会造成文章点击次数统计不准确等。加速效果:★★★★★
数据库缓存:推荐DB Cache Reloaded Fix ,可以将数据库查询缓存至硬盘,以极低的空间占用可以换来强大的性能提升。此外这个插件还提供了一个很实用的功能:将页面生成时间和数据库查询次数等信息插入到页面中,对分析服务器端性能非常有帮助。加速效果:★★★
Widget缓存:推荐WP Widget Cache,由于大多数博客所有页面上的小部件都是一致的,并且大多数情况下都不会有短时间内的变动,比如分类Widget的输出甚至可能永远不会变动,搭配上述两种插件可以再次减少生成静态化页面时的数据库查询次数。加速效果:★★
建议:这三类缓存插件可以互相搭配使用,对于访问量不大的博客来说,只使用数据库缓存或者再搭配页面缓存即可 。缓存类插件启用非常简单,但是通过合理的设置使插件工作在完美状态则比较困难,比如缓存文件的过期时间等设置项就需要结合访问量等因素综合考虑。
实现难度:★★☆ ,加速效果:★★★★
优化数据库:定期优化数据库,数据库体积越大则优化后的速度提升就越明显。可以通过登陆phpmyadmin选择优化,也可以通过插件DB Backup来优化。
实现难度:★ ,加速效果:★
小结:就我的博客文章页来说,页面生成时间大多在0.4-0.7秒之间,上述大多数因素对于速度的影响其实都非常小,甚至不到0.05秒。不过有时某些因素可能会大大减缓页面生成时间,比如利用wp-codebox高亮40行左右的代码后,生成时间会减缓到1.3秒甚至1.8秒。总体来说,剔除无用插件和使用缓存类插件对于博客服务器端的加速效果会更明显。

网络传输:
网络传输上很难改变的一个因素是服务器到客户端之间的带宽和响应速度,所以就需要尽量减少传输文件的数量和大小。Firebug中的网络面板,将每个文件的传输时间都以瀑布图的方式显示出来,非常直观清晰。页面中的每个文件都需要向服务器发送HTTP握手请求,一般情况下,握手花费的时间会比传输一个1KB的文件还长,所以精简文件个数是加快网络传输的重中之重。
减少HTTP请求数量:
去除不必要的图像,将图像用CSS Spitite合并。减少不必要的图像,在不影响体验和美观的前提下,尽量用文字代替图像。用CSS Spitite合并图像,可以将许多图标和按钮图像合并在一张图像上,以一次请求和总体更小的数据传输量代替多次请求和许多零碎的数据传输量,效果十分明显。比如本博客右上方的社会化链接图标,其只用了一张PNG图像,然后分别设置每个图标DIV的背景图像呈现出当前的效果。其CSS代码如下。
1
2
3
4
5
6
7
#top-sns a{background:url(img/icons-css.png) no-repeat left top;display:inline;float:right;height:28px;width:28px;background-position:0 0px;}
#top-sns a.email{background-position:0 -28px;}
#top-sns a.facebook{background-position:0px -84px;}
#top-sns a.twitter{background-position:0px -56px;}
#top-sns a.sns{background-position:0px -112px;}
#top-sns a.buzz{background-position:0px -168px;}
#top-sns a.gmail{background-position:0px -140px;}
推荐使用基于Adobe AIR的CSS Spirites样式生成工具,只要在PS等图像工具中先排列好图标,再在这个工具中分别选定图像的区域大小便可以输出可用的CSS代码,十分便捷。另外就是要注意不是所有的图像都适用于用CSS来表现。
使用WP Minify合并压缩JS,CSS,HTML文件,其具体使用方法参见http://neverweep.com/2011/04/wp-minify/
实现难度:★★★ ,加速效果:★★★★
减少传输文件大小:
开启网站Gzip,这是最有效的减少传输数据量的方法,对HTML,JS,CSS文件的压缩率很高。判断网站是否开启了Gzip可以到firebug网络面板中,点击上述的任意文件,查看头信息Tab中的响应头信息,contenten-coding为Gzip即为开启了Gzip功能。目前大多数服务器均默认开启了Gzip,如果发现没有开启,可以在以"WordPress gzip"为关键字进行搜索,在此不再累述。
实现难度:★★☆ ,加速效果:★★★★★
对图像文件进行优化。网站主题中的图像文件,建议使用http://smush.it 或者PageSpeed中的压缩服务,这个功能可以在不降低图像质量的前提下尽量压缩图像文件。另外推荐除动态图像外均使用PNG-8格式储存图像,这种格式一般比GIF具有更高的压缩比。针对博客中上传的照片,推荐将图像分辨率调制1024X768以下,并使用Advanced JPEG Compressor优化,这个工具可以直观的对比压缩前后图像质量的变化,选项也很丰富,可以在可接受的前提下尽量减少图像的体积。 (如果有条件,尽可能选择速度更快的图片托管服务器)。
实现难度:★★☆ ,加速效果:★★★★
精简无用的JS代码和CSS代码。一般博客中需要加载许多JS和CSS,可是其中有些功能或样式我们的博客中用不到。这时可以将无用的代码删除或注释掉,再经过WP Minify处理后大小就能显著减小。以wp-codebox为例,在本博客中只需要显示代码的功能而已,代码框折叠等功能并不需要,所以可以将wp-codebox自带的JS文件清空保存即可。
实现难度:★★★☆ ,加速效果:★★☆
使用CDN加速。对于一般的网站,使用CDN加速的成本很大,必要性也不高。但是Google为我们提供了一个使用CDN的可能,一般WordPress博客都会加载Jquery等JS库,使用Google CDN不仅可以减小服务器的负担,更重要的是由于其通用性,很可能访客的缓存中已经缓存了该JS库,这样就避免了再次加载所需的时间。比如需要引用1.4.4版的Jquery,只需要在header.php中适当位置加入
1
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
使用外部Jquery库后还需要在前台禁止加载WP自带的Jquery库,需要修改/wp-includes/script-loader.php,将:
1
2
3
4
$scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', false, '1.4.4');
//改为
if(is_admin()){
$scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', false, '1.4.4');}
不止google,微软和新浪app都提供了cdn服务,通过下面的链接找到各库的地址,择快而选:
微软aspnetcdn:http://www.asp.net/ajaxlibrary/cdn.ashx
新浪app:http://http://lib.sinaapp.com/
实现难度:★★ ,加速效果:★★★
使用WP Minify合并压缩JS,CSS,HTML文件,其具体使用方法参见http://neverweep.com/2011/04/wp-minify/
实现难度:★★★ ,加速效果:★☆
小结:网络传输时间占据的时间最多,所以在精简文件数量和大小上多下功夫能产生明显的效果。合并压缩文件,启用gzip后访问速度会有质的提升。

客户端:
设定文件过期时间。设定比较适当的文件过期时间,可以减少再次访问的用户的时间。以apache为例,只要修改文件根目录下的.htaccess文件,在最后加入
1
2
3
4
5
6
7
8
### mod_expires
ExpiresActive On
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/gif A2592000
### mod_expires
其中最后的A2592000表示过期秒数,范例中的值为一个月。中间是文件的MIME类型,application/x-shockwave-flash表示flash文件,image/x-icon表示favicon.ico文件,image/jpeg 表示jpeg和jpg文件,
实现难度:★ ,加速效果:★★
避免降低性能的图像、JS和CSS。以背景图像为例,可以在CSS设定图像得到repeat达到平铺的效果,但是如果平铺的图像分辨率过低。比如采用1X1像素,那么将会占用访客极大的CPU资源,相反采用10X10图像,资源占用将会有很大的下降。CSS中要避免大量使用text-shadow,box-shadow等属性,这同样也会对访客的资源造成很大负担。此外,由于IE中javascript的执行效率较差,所以也要避免占用资源过大的JS,比如半透明、渐变等JS效果。
另外推荐一篇优化javascript执行效能的一篇文章:提高 web 应用性能之 JavaScript 性能调优
实现难度:★★ ,加速效果:★★★★
指定图像大小。图像的HTML代码一般为
1
2
3
<img src="http://yoururl.com/image.gif" alt="image" />
//指定高度和宽度
<img src="http://yoururl.com/image.gif" alt="image" width="120" height="90" />
制定图像的高度和宽度,有利于减少浏览器渲染的时间,并可以在图像没有下载完成的情况下保持页面的结构,此外,尽量避免缩放图像,比如给一个10X10的图像指定高度和宽度为5X5,这样会减慢浏览器的性能。
实现难度:★ ,加速效果:★★
使用更有效率的CSS选择器。比如如下DIV结构
1
2
3
4
<div class="div">
  <div id="div1"></div>
  <div class="div2"></div>
</div>
对于网页上唯一的div1来说,使用 #div1 就比 .div #div1 更有效率。
另外特别推荐一篇优化CSS的技术文章:提高 web 应用性能之 CSS 性能调优
实现难度:★★ ,加速效果:★
避免不存在的链接。保证网页中的文件链接的有效性,可以避免返回HTTP 404等错误信息,防止时间的损耗。
实现难度:★ ,加速效果:★★
Cookie Free:当浏览器向服务器请求文件前,会先发送同域名下的cookie,但是服务器对于这些cookie不会做任何处理。所以,除了尽量保持cookie体积小之外,还可以通过Cookie Free的手段避免请求时发送cookie。如果博客首页为http://neverweep.com,则所有此域名下得二级域名都会发送此cookie,这样的域名除了使用另外的域名来做Cookie Free之外没有别的办法了(我的博客就是这样)。如果博客首页为http://www.neverweep.com,那么http://img.neverweep.com的内容将不会发送cookie,从而加快了速度。
实现难度:★☆ ,加速效果:★★
小结:客户端除缓存设置外影响并不大,因为渲染往往都在几十到几百毫秒内即可完成。不过有些因素会明显拖慢用户的浏览器,加大CPU占用,这也是需要为访客考虑的。设置一个合理的文件过期时间,优化页面在浏览器上的性能表现。
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 地板  发表于: 2012-05-09
wordpress性能优化技巧
前段时间,主机供应商Hellohost提醒我的资源占用有点高了,同时也有几个朋友反映博客页面载入速度有点慢,我觉得是时候对博客进行一些优化了,可是这方便又不怎么在行。刚好bbayou同学投了一篇关于wordpress性能优化的文章,于是,放出来供自己和需要的朋友参考。以下是投稿内容,原文在这里。


wordpress 并不是那么智能,我们都知道插件太多的情况下,网站打开速度会越来越慢,而php绝对不会是性能的瓶颈,因此,一个原因可能是因为过多的mysql查询,增加了系统负载。这个问题,插件super cache (全静态化缓存)可以轻松解决掉,那第二个原因呢,也许就出在网站的前端上了。比如,插件会有自己的JS/CSS/img文件读取方式,从而产生出了过多的HTTP请求。这些多余的请求以及加载方式,同样也有办法被轻易的解决掉。这里我以我的网站为例,加以说明。令人欣慰的是,优化后,我的网站速度有了明显提升(打开速度应该快30%以上),Yslow评级从 C 上升到 A。




优化前
1.这是Firefox的插件 Firebug 抓取的瀑布式HTTP请求.


可以看到,优化前,我的网站有15个HTTP请求。耗时1.09秒.


2.然后分别用Firefox插件 PageSpeed 和 Yslow 进行一些分析,优化前,我的Yslow评分为C,同时也智能的列出了一些优化方案,事实上,我们的要做的工作就在其中。






着手优化
1.减少HTTP请求


可以看到共产生的15个HTTP中,有1个来自html文档,4个来自CSS,3个来自JS,2个来自blog图片,5个来自CSS中使用的背景图片。


其中的3个CSS 请求来自插件:Pagenavi,EasyArchives,Syntax。分别读取了自己的css文件,而事实上,完全可以将他们的样式写入 style.css 内,然后再后台设置插件不读取自己的CSS,从而减少3个HTTP请求。


其中的5个CSS背景图片,可以用PS进行合并,合成一张图片,然后用 background-position 来显示。这样又可以减少4个HTTP请求。


之后,还有3个JS文件,一个来自插件 Collapsing Categories,一个来自 google 分析,另一个是整站使用的 Jquery 库。还算OK。因为我已经在后台将插件 Collapsing Categories 自带的 Jquery 库禁用。


最终,我们已经减少了7个HTTP请求,将总请求数减少了 40%。


2.gzip压缩


我们知道,GZIP压缩可以非常有效的减少传输的数据量大小(可降低40%-60%),数据量小了,从服务端返回给浏览器的时间也就缩小了。


推荐一个在线工具,可检查文件是否被gzip压缩。


Gzip需要去服务器进行设置,并且需要支持http1.1协议的浏览器(只要不是IE5),Linux下的Gzip安装及其配置方案可以 看这篇文章。


如果你用的虚拟服务器,可以在.htaccess文件中加入:


<ifmodule mod_deflate.c>
DeflateCompressionLevel 7
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE css js
</ifmodule>
3.增加Expires时间


毕竟返回304响应还是会请求服务器,所以延长缓存时间,直接从浏览器取cache可以大大的减少网站打开速度
此方案需要服务器安装Expires模块,不过一般都会默认安装的(如没有,可以单独编译 mod_expires 模块解决)。所以我们要做的,只需配置 .htaccess 文件:


<ifmodule mod_expires.c>
    ExpiresActive On
    ExpiresDefault A604800
    ExpiresByType text/css "access plus 2 month"
    ExpiresByType application/x-javascript "access plus 2 month"
    ExpiresByType image/gif "access plus 2 month"
    ExpiresByType image/jpeg "access plus 2 month"
    ExpiresByType image/png "access plus 2 month"
    ExpiresByType image/x-icon "access plus 2 month"
    ExpiresByType image/x-ico a2592000
    ExpiresByType application/x-shockwave-flash A2592000
</ifmodule>
4.CDN


CDN就是按地理位置去寻找离客户端最近的服务器,对静态内容非常管用,比如图片,视频。但是一般CDN的架设非常昂贵,不建议个人blog使用。不过,貌似有免费的CDN服务,可以去google一下。


5.JS放到尾部,CSS放到头部


将 JS 文件放到尾部,可避免下载JS时阻塞网络,影响并行下载。尤其对图片比较多的网站影响较大。因为浏览器在下载JS时,会等到JS文件全部下载完后,再进行余下的组件下载,所以将一些JS文件放到最后,让他不影响图片的下载,是个不错的选择
将 CSS 文件放到头部,可避免页面白屏,影响用户体验。这个大家都懂。你把CSS文件去掉,看看网站什么样就明白了。


6.减小JS文件大小


利用 JSmin 工具 ,可智能化去掉空格、回车、注释,减小JS文件约30%的大小。同理,因为文件大小的减少,可减少服务器返回响应的时间。


这里需要说明的是,我按照官方的方法没成功,即


运行 jsmin.exe,输入:jsmin small_script.js 没反应?
于是只好cmd,输入:D:\jsmin\jsmin.exe D:\jsmin\small_script.js


7.删除ETags


ETags 的问题在于它们是基于服务器唯一性的某些属性构造的。而当今大部分网站都是使用服务器集群来处理请求,这样Etag不容易命中。因此,若不需要用到ETags系统提供的灵活的验证机制,最好删除 ETag。


再说,Last-Modified头已经提供了基于元素时间戳的验证,而且删除ETag会减少 http 响应头的大小


只需在httpd.conf文件最后添加一行:FileETag none


优化后
我的blog访问速度得到了很大的提升,首页的HTTP请求降为:8个,耗时0.62秒。性能提升在30%-40%左右
Yslow评分为:A ,很荣幸跟 google,baidu 同级~哈哈。
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 4楼 发表于: 2012-05-09
突破WordPress性能瓶颈
WordPress本身的并发很低。在一台双核2.5G+,2G内存的Linux机器上。使用Apache的ab命令测试下来。并发在6-10个左右。这样的速度对于做站群的SEO策略来说,就是拿钱开玩笑,一台Server部署个50个WP博客,基本上也算是极限了。一旦Google来,基本上博客就无法访问了,很多情况下会报数据库的连接错误。这对google蜘蛛来说是灾难性的。(网站的访问速度也被参与了网站的排名)。
那么有没有什么办法能提高单台Server上安装的WP博客的数量,还能在Google来的时候,保持良好的访问速度?
本文将探讨如何在一台Server上部署上超过100,甚至超过200个WordPress博客(在Google蜘蛛来或是大访问量的情况下,能正常的打开博客)
需要解决的问题
* 数据库的最大连接数
WP的硬伤就是Mysql。Mysql5.1+后的版本,默认的最大连接数为151,之前的才100。这点并发在有50个博客的服务器上,真的不够用。google蜘蛛以来,基本上就会有个别博客出现数据库无法连接的问题。
我一般会修改 /etc/my.cnf 文件,修改Mysql的最大连接数为1000,其实这个数值太大了也不好,Linux服务器以及Apache在内存的限制下,能打开的有效连接数也不是很大。超过300以上就能危险了。如果真要是到了1000个情况下,我想你SSH也无法登录了。只能听天由命了~~~
OK,修改数据库的最大连接数只是第一步,最简单的一步。其实这个修改不能改变什么,我们只是将Mysql预计会出现的问题先处理掉。下面就是专心优化WP了。
* WP博客文章静态化
通过ab命令,在启用了WP super cache插件的情况下。相同Server的并发在1300+左右。这和并发10来说,简直就是天壤之别啊。
(具体如何安装WP super cache,可参阅其它资料。或者我下次补一篇文章)
我这里要说的是:
安装了WP super cache后,首先需要开启预处理所有的文章页面(建立永不过期的缓存文件)
为每个博客添加一个robots.txt文件,屏蔽对tag/, category/, 2012/等URL的抓取。
为每个博客添加Google Sitemap工具,生成站点地图。
对于新添加的文章而言,缓存系统需要在访问一次后才能生成静态缓存文件。对于做推广来说的博客,通常一个站长手里有数百个博客,发布博客也通常是使用伪原创软件自动发布的。一个博客每天可能会发布几十篇文章,不可能在所有的博客发布文章后,一个一个页面的去点击(让WP缓存静态文件)。所以这里需要一个类似于蜘蛛的程序,在发布文章后,去模拟蜘蛛去采。这样当蜘蛛来采集的时候,WP已经为它准备好了静态页面,瞬间让对WP博客的访问速度提高好几个等级)。但是有些博客的Google来的很快,可能发布了一篇文章后5分钟,蜘蛛就来了。所以最好的策略就是在发布了一篇文章后,程序能访问一次当前发布的文章,这样就算蜘蛛在5分钟内来采,我们的WP也已经缓存好了对应的静态文件。

对于做推广的WP博客,在配置的时候需要注意。
* 为博客添加robots.txt,屏蔽Tag,分类,存档的抓取
* 禁用博客文章的评论
* 对文章的评论需要登录的用户才可以
* 取消PingBack等
* 取消发布文章Ping文章中的URL(这点很关键,如果你是用WP博客做推广的,那么文章里面难免会出现你需要推广的网站的URl,如果这个选项没用禁用,那么在发布一篇文章后,WP会在Ping文章中出现的URL。如果你服务器上很多的博客在使用程序自动发布文章的话,那么可能对于被推广的服务器来说。在短期内连接数很飙升,严重是会导致被推广的服务器无法访问)
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
描述
快速回复

您目前还是游客,请 登录注册
如果您在写长篇帖子又不马上发表,建议存为草稿