使用国外空间,速度是一大难题,但是鉴于国内河蟹的形式,或者又不想为网站花钱,没法弄CDN。请看本文

[文章为原创,转载请注明出处]

那么只能从软件方面下手了

首先是减少页面开销,减少HTTP请求

尽量不要在页面中放入很多的图片、CSS、JS,不要为博客绚丽而去选择复杂臃肿的主题,简洁为美!

有一原则:HTML和CSS、JS分家[不要在HTML中插入CSS、JS,用SRC方式连接],CSS打头,JS收尾[CSS放在head中,JS放在HTML末尾],中间没有执行性JS,拒绝CSS Expression

图片最好选择PNG和JPG类型,分辨率和大小不要太高

JS和CSS能合并就合并吧,不过因为很多人的JS和CSS是因为插件冒出来的,所以就有了第二条

尝试不要安装过多的插件

过多的插件不仅会导致页面中的元素过多,还会导致WordPress整体反应运行速度下降

占用的资源增加,这点对免费空间使用者尤为敏感,国外的免费空间看起来是很大方,其实都有些看得见或看不见的限制,再加上是免费的,所以占用资源大了,说不准就直接关站了,连个招呼都不打,这样就杯具了

但是有时候实在想安装一些插件,怎么办呢?

使用缓存插件

缓存插件主要有几种:普通数据库缓存[DB cache],依赖WP程度较大的全HTML缓存插件【hyper cache】,依赖WP和地址重写[伪静态]的半HTML缓存插件【WP super cache】,基本不依靠WP但依靠伪静态的全HTML缓存【cos html cache】

如果你是无法使用伪静态【一般是WIN主机】且不喜欢折腾的,使用DB cache能有些作用

如果你支持伪静态同样不喜欢折腾,使用WP super cache也可以满足需求

如果你是无法使用伪静态,但喜欢折腾,使用hyper cache,在人流量不大的情况下,修改设置,开启在任何修改的情况下更新缓存这个选项,要不然,可能你等半天都不一定显示出你刚发的POST,访客也会看不到刚发的评论[不知道这个BUG修正了没],因为是全静态,因此有些问题会和cos html cache一样,看下面

如果你既支持伪静态又喜欢折腾,cos html cache是你的不二选择

这个的插件设置极少,只能删除HTML,启动它必须修改WP的固定连接为*.html样式【就像本站】

这样他就能生成实实在在的HTML文件以完全替代WP处理

但这样也会产生一些问题,例如,访客COOKIES失效了

大家如果做过其它博客的访客,会知道在第一次访问填写过昵称、Email、网站后,第二次评论就不用再填了,类似自动填表。这是要求WP处理的,因此可见WP super cache没有完全缓存。使用hyper cache也会有此问题

解决方案见下面的链接,用JS代替WP完成这些活

http://hellobmw.com/archives/cookie-validation-for-static-wordpress.html

另外就是一些采用博客自身数据库储存统计数据的插件会失效,这类统计不用在博客中添加代码,是通过博客自身进行统计的,方法就是换成别的外部统计

通过缓存,能够减小博客负载,加快速度,但是加快速度的秘诀不仅在此,还有个重要家伙——

开启GZIP输出

开启GZIP输出,LINUX主机有天生的优势,别以为弄个插件就完事,如果你是WIN主机的确只能这么做

LINUX主机可以通过修改htaccess实现JS和CSS一起GZIP输出,不仅输出html

1
2
3
<ifmodule mod_deflate.c> 
AddOutputFilter DEFLATE html xml php js css
</ifmodule>

这样又能快不少,但切忌往里面加入图片甚至是EXE,会严重加重主机负担

==============================

建议WIN主机不用往下看了

==============================

为图片、JS等基本不会变的元素设置较长浏览器cache过期时间

需要主机对mod_expires.c支持【】,在htaccess加入:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<IfModule mod_expires.c> 
ExpiresActive On
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType application/javascript A2592000
ExpiresByType text/css A604800
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType text/plain A86400
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType video/x-flv A2592000
ExpiresByType application/pdf A2592000
</IfModule>

我认为HTML不需要额外缓存,因此没加入

这还没完,由于有etag,我们的缓存设置目的就会泡汤,因此还要加入一句

FileETag none