季节不曾为我赶路SorryDreams的Blog

SorryDreams和他的博客

“带着没有答案的问题,茫然,孤独,从城市的深处,支离破碎的蓝天都一样”

blog header

对Wordpress/WPMU进行SEO和性能优化

wordpress/WPMU进行SEO和性能优化。

客观的说,此文并不是为SEO而写的,因为以SEO的标准来衡量,这个标题绝对不合格,首先没有做到一文一事,其次关键词竞争过于激烈。所以我写这篇文章并非出于严谨的态度,也没有更多指导性的意见,只是简单罗列一下近期学习和所做的部分“优化工作”。

SEO优化

如果你使用wordpress并曾经留心过SEO,那么你一定听说过“all in one seo”这个著名的傻瓜插件。我不使用也不推荐使用它,原因有二:一不符合百度国情;二拖累系统。

废话不多说了。

第一、采用/%year%/%monthnum%/%postname%.html作为永久链接。为什么采用这种形式并且以中文作为postname……下次再说。

第二、改变title的形式,title也就是你的浏览器标题栏上显示的我的页面的名称结构,方法是修改主题的header.php,在之间加入:

<title><?php if (is_home() ) { ?>季节不曾为我赶路SorryDreams的Blog<?php } else {?><?php wp_title(); ?> | 季节不曾为我赶路SorryDreams的Blog<?php } ?></title>

第三、继续修改主题的header.php,为主页和文章页添加meta description和keywords:

<?php if (is_home()){
$description = “季节不曾为我赶路SorryDreams的Blog,关注互联网和电影的独立博客”;
$keywords = “互联网,IT,电影,Movie,音乐,Song”;
} elseif (is_single()){
if ($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
$description = substr(strip_tags($post->post_content),0,220);
}
$keywords = “”;
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . “, “;
}
}
?>
<meta name=”keywords” content=”<?=$keywords?>” />
<meta name=”description” content=”<?=$description?>” />

这段代码的目的是为主页指定meta description和keywords。对于日志页,如果有手动添加摘要,则以之为meta description,否则则截取前220个字符作为description(为什么是220个?Google推荐),将tag作为meta keywords,tag必须是文章中出现的文字——为什么?下次再讲。

第四,启用WordPress Keyword Link插件,自动在文章中为指定文字添加链接。我现在的做法是适时插入wikipedia的链接,因为Google熟读wiki;适当使用rel=”external nofollow”属性,节省爬虫抓取网页的时间。

第五,启用sitemap.xml提交给google。这个不多说了,最近blog换成wpmu一直为sitemap的事情烦恼,目前还没有解决。

第六,养成良好的写作习惯——如果你真的有心SEO的话这一点是最重要的。如果你和我一样只是随便写写的话,做到上述几点就很给Google面子了。

性能优化

这一部分主要根据yahoo的YSLOW标准进行优化。

第一、开启gzip压缩。有些服务器默认就为你开启了gzip压缩。如果你访问某个网站,开始没反应,然后一下子全部展现,多半就是开启了gzip压缩传输的效果。除非万般无奈,一定要开启gzip压缩。参考万戈同学的Wordpress之终极Gzip兼容IE6

第二、开启wordpress缓存。wordpress的缓存方法实在太多了。最立竿见影的可能是wp-super-cache和cos-html-cache这两款插件了,很遗憾这两个插件的兼容性不是特别好,在息壤主机的wpmu上无法开启。既然不能从html上入手,只能从数据库入手了。推荐wordpress-object-cache,它可以将php查询数据库的值储存在服务器硬盘上,从而降低查询次数,加快页面的加载速度——如果能够储存在内存上自然更快了,但暂时找不到解决方案。

第三、使用Delete-revision Manager插件。当你在wordpress在后台写blog时,wordpress会自动保存草稿,当你发表后再次编辑时,wordpress继续为你保存草稿——所有这些草稿会保留在数据库中,如果你写了几百篇blog却从来没有意识到这个问题的话,可能有一千篇文章正躺在你臃肿的数据库中,使用Delete-revision Manager删除它们,放心,绝对安全。

第四、使用MaxBlogPress Ping Optimizer插件。即使在2.7版本的wordpress中(2.8版本未知),关于ping的重大bug仍然没有修复——当你发表blog后再次编辑时,wordpress会错误地认为你正在发表新的文章,于是它就会反复ping网络上的ping server,通知它们你的blog正在更新。这会产生不必要的带宽消耗。我使用MaxBlogPress Ping Optimizer还有一个重要原因是wpmu自身不允许普通用户自定义ping server list.我的list如下,贵在精,不在多,每一个都有效:

http://rpc.pingomatic.com/
http://blogsearch.google.com/ping/RPC2
http://ping.feedburner.com
http://www.zhuaxia.com/rpc/server.php
http://blog.youdao.com/ping/RPC2
http://www.feedsky.com/api/RPC2
http://rpc.icerocket.com:10080/
http://blog.iask.com/RPC2

第五、合并js库。简单解释一下,通常浏览器读取页面时会加载所需的js库,现在很多浏览器如ChromeFirefox运行java脚本的速度较之两年前快了很多——所以你可以认为Chrome和Firefox不断地推出新的版本“并非浪得虚名”——要命的是所有的js库只会一个跟着一个依次读取,这意味着如果你的wordpress启用较多的java脚本——你可以查看blog页面的源代码,搜索“javascript”,通常都在7-13个左右,甚至更多。每一个javascript都会发出一个http请求,每一个请求都会耗取相当长的时间。如果你的blog速度像乌龟,数据库和js通常是两大根源。解决方法是把所有的js文件,按照它们依次加载的顺序合并为一个文件,然后使用js压缩工具压缩成尽可能小的文件,然后在header.php中去掉

<?php wp_head(); ?>

在footer.php中插入类似的代码:

<script type=‘text/javascript’ src=‘http://blog.frompku.com/wp-includes/js/all.js’></script>

代码中的链接地址是我根据上述步骤合并的js文件。

在这篇校友所写的优化Wordpress-wp终极优化手册中,提供了另一种方法,在要求加载js的插件中找到类似语句:

add_action(’wp_head’,'fun’ );

注释或删除之,从而阻止插件在head中加载js库。这种方法对wpmu不适合,因为这会导致插件对没有修改过的主题失效;另一方面,可操作性较差。

第六、合并CSS。这个原理和js类似,但风险小很多,可使用CSS优化工具

第七 ……

展开说还有很多,下次……再讲,最近折腾太多。

分享和收藏:
  • Google Bookmarks
  • 开心网
  • 校内网
  • 百度搜藏
  • 豆瓣
  • 豆瓣九点

欢迎访问季节不曾为我赶路,如果你喜欢我的文章,请订阅我的博客

相关文章

转载请注明,转载自:季节不曾为我赶路SorryDreams的Blog[http://blog.frompku.com] 本文链接: http://blog.frompku.com/2009/08/%e5%af%b9wordpresswpmu%e8%bf%9b%e8%a1%8cseo%e5%92%8c%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96.html

4 Comments, 留言 or 引用

  1. 也是个喜欢折腾WP的朋友啊

    [回复]

    SorryDreams 回复:

    嗯,向你学习显示代码的方法,发现wp-synatx不能很好的工作。 :razz: 新的问题又来了,wp-post-view不能统计了。 :roll:

    [回复]

  2. 更新:wpmu对一些执行代码会有限制,这是为什么wp-synatx无法正常工作,并且之前导入文章时关于flash player的字段全部消失的原因,解决方法是手动hack一下kses.php

    [回复]

  3. 我是一个更随性的懒人,我发现我都没有做任何任何。。。

    [回复]

发表评论

(Ctrl+Enter)