百度静态资源公共库结合起来加速您的wordpress站点

百度静态资源公共库

静态资源公共库是指将常用的Javascript库、CSS模板库、字体库存放在CDN节点上,以方便广大开发者直接在自己的网站上通过script标签引用这些静态资源。这样做不仅可以节省流量,减轻您的服务器压力,还能通过CDN加速,获得更快的访问速度,与将资源库存放在服务器单机上相比,静态资源公共库更加稳定、高速。

百度推出了前端公共库(URL地址:http://cdn.code.baidu.com/),是一款稳定、高速、全面、开源的国内CDN加速服务。 它具有如下特点:

稳定,高速

由百度遍布全国各地100+个CDN节点提供加速服务。

让开源库享受与百度首页静态资源同等待遇。

全面,开源

收录超过180+开源库,并且这个数字正在不断增加。

百度静态资源公共库服务不仅在Github开源库上接受任何人的提交请求,同时实时同步国外如CDNJS上优秀的开源库。

加速您的wordpress站点

我们就以jquery为例,相信很多wordpress主题使用了自带的jquery,或者使用Google的jquery库,如何换到百度的?只要去主题的header文件里找找,是否有定义了jquery库的链接,像我的loper主题很快就能找到定义位置header.php:

  1. <?php if($options[‘jqueryurl’]) : ?>      
  2.     <script  src=“http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js “></script>     
  3.     <?php else : ?>      
  4.     <script  src=“<?php bloginfo(‘template_url’);?>/scripts/jquery-1.4.4.min.js”></script>     
  5.     <?php endif; ?>    

修改后,如下:

  1. <script typet=“text/javascript” src=“https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js”></script>  

如果我们还用到了其他js库,比如json,都可以用这个方法改到百度的库,至少可以保证在国内使用会高速,稳定。

另外,在这次修改的过程中,我还发现了wordpress自身也会引用jquery库,通过查看页面源码可以发现引用了wp-include目录下的一个jquery,这是wordpress后台要用到的文件,可以通过修改wp-include/script-loader.php文件,找到jquery.js,改成:

  1. if(is_admin()){     
  2.        $scripts-&gt;add( ‘jquery’, ‘/wp-includes/js/jquery/jquery.js’, array(), ‘1.8.3‘ );}    

这样就不影响后台功能了,同时前台页面也不会加载这个js文件了。

当然,每个人的主题,加载的JS之类的文件是不一样的,可以根据自己的需要,来选择性地更换为百度的静态资源公共库的内容.

国内常用静态资源 CDN 公共库加速服务

1.新浪云计算公共库

http://lib.sinaapp.com/

支持的库比较少,但是支持 https。

2.360 网站卫士常用前端公共库

http://libs.useso.com/

除了提供前端库之外,只需替换一下域名,360 就可以让你继续使用 Google 提供的前端公共库和免费字体库。但是同样最大的问题,不支持 https。

3.七牛云存储开放静态文件

http://staticfile.org/

国内目前最全的前端库了,使用 https 要换用另外一个域名:https://dn-staticfile.qbox.me/

4.又拍云JS库

http://jscdn.upai.com/

只提供 jQuery,MOOTOOLS,MODERNIZR,DOJO和EMBER这5个库,而且已经很早没更新了,一般建议不要使用了。

还有 CDNJS,Google Hosted Libraries其他一些公共 CDN 库,但是国内访问速度不快,这里也就不提了.

小结

目前提供这样的静态资源库的,不止百度,像新浪的,七牛的,都还是非常不错的.

WordPress上传文件自动重命名

代码一,按时间重命名
上传文件时会以“年月日时分秒+千位毫秒整数”的格式重命名文件,如“20161023122221765.jpg”

  1. //wordpress上传文件重命名  
  2. function git_upload_filter($file) {  
  3.     $time = date(“YmdHis”);  
  4.     $file[‘name’] = $time . “” . mt_rand(1100) . “.” . pathinfo($file[‘name’], PATHINFO_EXTENSION);  
  5.     return $file;  
  6. }  
  7. add_filter(‘wp_handle_upload_prefilter’, ‘git_upload_filter’);  

代码二,用MD5加密生成数字并重命名
名称规则是由系统自动生成的一个32位的MD5加密文件名,由于默认生成的32位文件名有点长,所以使用substr(md5($name), 0, 20) 截断将其设置为20位。

  1. function rename_filename($filename) {  
  2.     $info = pathinfo($filename);  
  3.     $ext = emptyempty($info[‘extension’]) ?  : ‘.’ . $info[‘extension’];  
  4.     $name = basename($filename, $ext);  
  5.     return substr(md5($name), 020) . $ext;  
  6. }  
  7. add_filter(‘sanitize_file_name’, ‘rename_filename’, 10);  

使用方法
将代码添加到当前主题functions.php模板文件中即可。
以上代码,很方便,节省时间。
其实也可在电脑上全选文件,按F2,然后直接输入字母或者数字,回车重命名的方法也很方便。

替换 WordPress 4.2 中的 Emoji 资源调用

在 WordPress 4.2 中新增支持 Twitter Emoji 表情,但是,默认使用的 CDN —— s.w.org 在国内是无法正常访问的。所以想要正常使用的话,就要自己动手替换下 CDN 地址。

Twitter 官方提供了来自 MaxCDN 的 CDN 服务:http://twemoji.maxcdn.com/

要将默认 CDN 地址修改为 MaxCDN,只需将以下代码粘贴到主题 functions.php 的最后:

  1. // 替换 WordPress 默认 Emoji 资源地址  
  2. function c7sky_change_wp_emoji_baseurl($url){  
  3.     return set_url_scheme(‘//twemoji.maxcdn.com/72×72/’);  
  4. }  
  5. add_filter(’emoji_url’, ‘c7sky_change_wp_emoji_baseurl’);  

MaxCDN 在国内是可以正常访问的,如果你有其他的 CDN 地址或者本地资源,只需替换 //twemoji.maxcdn.com/72×72/ 部分即可,很简单吧!

关闭了站内文章站外调用功能

由于今天在察看网站的时候发现FEED不能显示,发现在页头多了一个空行,怎么弄都找不到原因.
想到可能是插件的冲突,所以在后台一个个插件的关闭,启动,终于找到了是安装了一个叫Ecall的站外调用插件惹的祸,果断关删除后恢复了.
至此,对使用本站站外调用免费代码的用户说声对不起.

实现发布新文章Email通知注册用户

11664993_152755345136_2
QQ邮箱订阅中有这样一个功能:在读者订阅博客后将每天汇总该博客更新信息,并发送至QQ邮箱里。我们可以效仿此法,达到同等推广效果。这样一来,网站更新了什么内容即可直接调用信息,批量发送新文章内容至 Email 通知自己的用户。

在服务器开启 Mail 函数情况下,添加以下代码至 Functions.php:

  1. function newPostNotify($post_ID) {  
  2.      if( wp_is_post_revision($post_ID) ) return;  
  3.    
  4.      global $wpdb;  
  5.      $get_post_info = get_post($post_ID);  
  6.      if ( $get_post_info->post_status == ‘publish’ && $_POST[‘original_post_status’] != ‘publish’ ) {  
  7.          // 读数据库,获取所有用户的email  
  8.          $wp_user_email = $wpdb->get_results(“SELECT DISTINCT user_email FROM $wpdb->users”);  
  9.    
  10.          // 依次给每个Email发邮件  
  11.         foreach ( $wp_user_email as $email ) {  
  12.              // 邮件标题:xx博客有新文章  
  13.             $subject = ‘xx博客有新文章’;  
  14.    
  15.              // 邮件内容:新文章网址:+ URL  
  16.              $message = ‘新文章网址:’ . get_permalink($post_ID);  
  17.    
  18.              // 发邮件  
  19.             wp_mail($email->user_email, $subject, $message);   
  20.          }  
  21.      }  
  22. }  
  23.    
  24. // 钩子,一旦WordPress有新文章发布或文章被修改即刻执行newPostNotify函数  
  25. add_action(‘publish_post’, ‘newPostNotify’);  

WordPress 实现用户使用Email地址登录

90b1OOOPICce
对于忘记注册的用户名这种情况,可谓再常见不过了……幸运的是,您可以在登录界面增加一个“使用Email登录”的选项,这样,我们可爱的用户应该不会再为登录不上 WordPress 而苦恼了吧?

代码添加 Email 登录功能,添加以下代码至 Functions.php:

  1. //remove wordpress authentication  
  2. remove_filter(‘authenticate’, ‘wp_authenticate_username_password’, 20);  
  3.    
  4. add_filter(‘authenticate’, function($user, $email, $password){  
  5.    
  6.     //Check for empty fields  
  7.         if(empty($email) || empty ($password)){          
  8.             //create new error object and add errors to it.  
  9.             $error = new WP_Error();  
  10.    
  11.             if(empty($email)){ //No email  
  12.                 $error->add(’empty_username’, __(‘<strong>ERROR</strong>: Email field is empty.’));  
  13.             }  
  14.             else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ //Invalid Email  
  15.                 $error->add(‘invalid_username’, __(‘<strong>ERROR</strong>: Email is invalid.’));  
  16.             }  
  17.    
  18.             if(empty($password)){ //No password  
  19.                 $error->add(’empty_password’, __(‘<strong>ERROR</strong>: Password field is empty.’));  
  20.             }  
  21.    
  22.             return $error;  
  23.         }  
  24.    
  25.         //Check if user exists in WordPress database  
  26.         $user = get_user_by(’email’, $email);  
  27.    
  28.         //bad email  
  29.         if(!$user){  
  30.             $error = new WP_Error();  
  31.             $error->add(‘invalid’, __(‘<strong>ERROR</strong>: Either the email or password you entered is invalid.’));  
  32.             return $error;  
  33.         }  
  34.         else//check password  
  35.             if(!wp_check_password($password, $user->user_pass, $user->ID)){ //bad password  
  36.                 $error = new WP_Error();  
  37.                 $error->add(‘invalid’, __(‘<strong>ERROR</strong>: Either the email or password you entered is invalid.’));  
  38.                 return $error;  
  39.             }else{  
  40.                 return $user; //passed  
  41.             }  
  42.         }  
  43. }, 203);  

适用于阿里云ACE的WordPress Rewrite规则

随着阿里云ACE(阿里云引擎)功能的日臻完善,我最近在考虑将博客迁移到ACE平台上。因为我的博客中的大部分URL都使用了Rewrite,可是偏偏网络上并没有适用于阿里云ACE的,所以我只能自己写了。

在经历了繁复的拼凑过程之后,终于给搞出来了:

  1. rewrite:  
  2. – url: ^$  
  3. script: /index.php last  
  4. – url: ^/(?!wp-)([\w/_-]+(\.html$)?)$  
  5. script: /index.php/$1 last  

第一条Rewrite语句用于对首页进行重写,比如用户访问“http://mawenjian.aliapp.com/”,服务器会将请求重写到“http://mawenjian.aliapp.com/index.php”。如果没有这一条规则的话,就会出现找不到首页的情况。

第二条用于对分类页面、TAG页面、文章页面等的URL进行重写。这条规则规定,如果URL中的字符由字母、数字、“-”、“/”或者“_”组成,并且:1)不以“wp-”开头;2)无后缀或者后缀是”.html”,则将其由WordPress程序处理。因此,无论是对于以“wp-”打头的WordPress系统文件,还是上传的图片文件,就都不会出现不能正确返回原文件的情况了。

因为每个WordPress博客的固定链接可能并不相同,所以如果你想测试下这段规则是否适用于你的网站,不妨使用正则表达式验证工具测试下。我觉得中国站长站的正则验证工具(http://tool.chinaz.com/regex)就挺不错的。需要注意的是,在做正则验证时,路径应当从“/”写起,而不是从“http://”。比如我要验证的URL是“http://mawenjian.net/p/1270.html”,那么在下边的文本框中就应该填写“/p/1270.html”,而不是“http://mawenjian.net/p/1270.html”。

wordpress转移中文文件名的图片导致乱码

最近帮一个朋友进行了wordpress空间的转移,遇到一个问题,
他是使用的美国cpanel主机空间,他的wordpress里所有的图片都是中文文件名。
用通常的wordpress转移方式把文件和数据库备份,再到新空间导入之后,发现中文文件名的图片都是无法显示的。

经过几番尝试发现:
必须是在原cpanel里压缩成.tar格式,然后上传到新主机里解压,中文就可以保存下来。
而解压成.zip是不行的。

分析原因可能是tar和zip的压缩和解压的方式不同,导致他们对文件名编码的处理方式不一样。

总之,.tar格式的压缩方式才可以完全保留正确的中文编码,而.zip会导致乱码。

站外调用WordPress最新文章

WordPress调用站外文章解决方法小结
调用WordPress随机文章、最新文章和热门文章总结:
方法一:

这个外部网站调用WordPress博客文章就不仅仅限于最新文章了,它几乎可以调用所有类型的文章,如最热文章,随机文章、最新评论等等,不过唯一不好的就是速度可能慢点,具体效果可以见秋茄树上文章。
下面说说外部网站调用wordpress博客热门文章列表实现方法:
首先在你要被外部调用文章的网站根目录下建立一个php文件,命名为blog_call.php。
内容如下:

  1. <?php  
  2. //该文件放置在你要调取的博客的主目录  
  3. define(‘WP_USE_THEMES’, false);  
  4. require(‘./wp-load.php’);  
  5. query_posts(‘showposts=10′);  
  6. //这里是调用最新文章,如果是热门文章的话则改为get_most_viewed(“post”,10);当然这得是你的主题安装了热门文章插件,而且这里可以接受几乎wp-kit-cn所有代码。非常方便  
  7. ?>  
  8. <?php while (have_posts()): the_post(); ?>  
  9. <li><a href=”<?php the_permalink(); ?>” target=”_blank”><?php echo mb_strimwidth(strip_tags(apply_filters(‘the_title’, $post->post_title)), 050,” “); ?></a></li>  
  10. <?php endwhile; ?  

如果你要输出文章摘要,可以使用下面的代码:

  1. <?php  
  2. //该文件放置在博客的主目录  
  3. define(‘WP_USE_THEMES’, false);  
  4. require(‘./wp-load.php’);  
  5. query_posts(‘showposts=30′);  
  6. ?>  
  7. <?php while (have_posts()): the_post(); ?>  
  8. <h2><a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a></h2>  
  9. <?php the_excerpt(); ?>  
  10. <?php endwhile; ?>  

最后在你需要调用网站文章的那个站点上面,加上如下代码:

  1. <?php  
  2. //该代码放置在需要调用文章内容和列表的地方  
  3. $url=http://你的博客地址/blog_call.php;  
  4. echo file_get_contents( $url );  
  5. ?>  

方法二:
  这个方法是最通俗的思路,用WordPress 的RSS功能实现。把下面的代码黏贴到相应地方,然后用CSS美化一下就搞定~

  1. <?php // Get RSS Feed(s)  
  2. include_once(ABSPATH . WPINC . ‘/rss.php’);  
  3. $rss = fetch_rss(‘http://www.aips.me/feed’);//在这添加所要调用网站的Feed地址  
  4. $maxitems = 10;  
  5. $items = array_slice($rss->items, 0, $maxitems);  
  6. ?>  
  7. <ul>  
  8. <?php if (empty($items)) echo ‘<li>No items</li>’;  
  9. else  
  10. foreach ( $items as $item ) : ?>  
  11. <li>  
  12. <a href=’<?php echo $item[‘link’]; ?>’  
  13. title=’<?php echo $item[‘title’]; ?>’ target=”_blank”>  
  14. <?php echo mb_strimwidth($item[‘title’] , 080, ‘…’) ; ?>  
  15. </a>  
  16. </li>  
  17. <?php endforeach; ?>  
  18. </ul>   

记得加CSS样式…不然真心没法看!

WordPress删除文章同时自动删除缩略图及图片附件

WordPress删除文章时,文章内所上传到媒体库的图片等附件不会自动删除,占用了网站空间,因此下面说明通过几行代码的简单方式实现在删除文章时自动删除缩略图以及图片附件,这样就不用手动去媒体库寻找并删除,准确而且效率高。

代码

  1. /* 删除文章时删除图片附件 
  2. /* ———————— */  
  3. function delete_post_and_attachments($post_ID) {  
  4.     global $wpdb;  
  5.     //删除特色图片  
  6. $thumbnails = $wpdb->get_results( “SELECT * FROM $wpdb->postmeta WHERE meta_key = ‘_thumbnail_id’ AND post_id = $post_ID” );  
  7.     foreach ( $thumbnails as $thumbnail ) {  
  8. wp_delete_attachment( $thumbnail->meta_value, true );  
  9.     }  
  10.     //删除图片附件  
  11. $attachments = $wpdb->get_results( “SELECT * FROM $wpdb->posts WHERE post_parent = $post_ID AND post_type = ‘attachment'” );  
  12.     foreach ( $attachments as $attachment ) {  
  13. wp_delete_attachment( $attachment->ID, true );  
  14.     }  
  15. $wpdb->query( “DELETE FROM $wpdb->postmeta WHERE meta_key = ‘_thumbnail_id’ AND post_id = $post_ID” );  
  16. }  
  17. add_action(‘before_delete_post’, ‘delete_post_and_attachments’);  

说明

将上述代码放到主题functions.php文件中即可使用,其在删除文章时先执行函数内容,删除特色图片以及图片附件,如果在使用action delete_post而不是before_delete_post将导致删除文章后因媒体附件与文章关联已取消而无法正确删除。

替换Gravatar头像服务器

73448e25c76cc3b76bd4a6a8b37104db
近来伟大的墙又开始刷存在感了,而且比以往更加变态,不但Google全线沦陷,连一向比较合作的微软也开始遭殃,WordPress就更不用说了,Gravatar服务也是前所未有的受到了威胁。从而导致,博客打开速度奇慢,甚至于打不开。
一般情况下,WordPress使用以下四个服务器:
http://1.gravatar.com;
http://2.gravatar.com;
http://0.gravatar.com;
http://s.gravatar.com;
虽然还有很多的镜像,但是一味的使用官方的服务器,不是治本的方法,你不知道何时会全线沦陷。由此,替换掉Gravatar官方的服务器是很有必要的。方法也有很多种,最简单的就是使用国内的第三方评论服务,比如多说,友言……等等。
不过,你可能不想用第三方的服务,而仅仅是想替换掉图片服务器。方法也是有很多种。以多说的镜像为例。
打开wp-includes/pluggable.php,找到1649和1651行,
把http://%d.gravatar.com和http://0.gravatar.com都改为 http://gravatar.duoshuo.com;
不过这个方法升级了版本后也许会被覆盖掉,到时候就需要重新修改,下面的方法比较推荐。
将下面的代码加到主题的functions.php 文件:

  1. function mytheme_get_avatar($avatar) {  
  2. $avatar = str_replace(array(“www.gravatar.com”,“0.gravatar.com”,“1.gravatar.com”,“2.gravatar.com”),“gravatar.duoshuo.com”,$avatar);  
  3. return $avatar;  
  4. }  
  5. add_filter( ‘get_avatar’, ‘mytheme_get_avatar’, 103 );  

当然你也可以换成yepcdn的,把代码中的gravatar.duoshuo.com换成 gravatar.yepcdn.org 即可!

免费主题暗藏后门 波及WordPress等知名CMS系统

14170525695932
最近美国安全研究者爆料,针对CMS(内容管理系统)网站的数千种插件和主题被植入了名为CryptoPHP的后门,这可能导致大量的Web服务器被攻击者据为己有。

隐藏在CMS免费插件之中

这种新发现的后门插件名为“CryptoPHP”,这种后门通常会隐藏在WordPress、Joomla和Drupal的插件或主题中。

为了让网站管理员中招,邪恶的攻击者使用了社会工程学的招数。一旦网站管理员下载并使用了包含了后门的盗版的CMS插件,后门便会在服务器上安家。
荷兰Fox-IT公司在揭密“CryptoPHP”的白皮书中提到:

“演员一样的后门安插在盗版的主题和插件中,并免费提供给网站管理员安装到服务器中。”

一旦后门被安插在服务器后,攻击者可以通过多种方式控制服务器,包括C&C(command and control server)、邮件和人工控制。

后门功能特性

CryptoPHP后门的其他特性包括:

整合并支持多种内容管理系统包括WordPress、Drupal和Joomla 与指控服务器(C&C)的通讯使用公钥加密 准备了大量的指控服务器域名和IP 通过邮件防止指控服务器域名下线的备份机制 手动控制后门 远程更新指控服务器列表 后门自动更新
1416994997383

同时,攻击者还利用置入了CryptoPHP后门的网站和服务器进行黑帽SEO。

截止11月12日,安全研究人员在上千种插件和主题中发现了超过16种CryptoPHP后门及其变种,而第一次发现此后门是在2013年9月。目前受到影响的网站数量难以准确统计,但至少已有上千个网站已经受到了此后门的威胁。
1417052569565

适用于阿里云ACE的WordPress Rewrite规则

aliyun.jpg
随着阿里云ACE(阿里云引擎)功能的日臻完善,我最近在考虑将博客迁移到ACE平台上。因为我的博客中的大部分URL都使用了Rewrite,可是偏偏网络上并没有适用于阿里云ACE的,所以我只能自己写了。

在经历了繁复的拼凑过程之后,终于给搞出来了:

  1. rewrite:  
  2. – url: ^$  
  3. script: /index.php last  
  4. – url: ^/(?!wp-)([\w/_-]+(\.html$)?)$  
  5. script: /index.php/$1 last  

这段规则由两部分构成:

第一条Rewrite语句用于对首页进行重写,比如用户访问“http://mawenjian.aliapp.com/”,服务器会将请求重写到“http://mawenjian.aliapp.com/index.php”。如果没有这一条规则的话,就会出现找不到首页的情况。

第二条用于对分类页面、TAG页面、文章页面等的URL进行重写。这条规则规定,如果URL中的字符由字母、数字、“-”、“/”或者“_”组成,并且:1)不以“wp-”开头;2)无后缀或者后缀是”.html”,则将其由WordPress程序处理。因此,无论是对于以“wp-”打头的WordPress系统文件,还是上传的图片文件,就都不会出现不能正确返回原文件的情况了。

因为每个WordPress博客的固定链接可能并不相同,所以如果你想测试下这段规则是否适用于你的网站,不妨使用正则表达式验证工具测试下。我觉得中国站长站的正则验证工具(http://tool.chinaz.com/regex)就挺不错的。需要注意的是,在做正则验证时,路径应当从“/”写起,而不是从“http://”。比如我要验证的URL是“http://mf158.com/p/1270.html”,那么在下边的文本框中就应该填写“/p/1270.html”,而不是“http://mf158.com/p/1270.html”。

让WordPress飞起来,加速WP的基本技巧

 WordPress版本越靠后,越来越强大,当然也越来越臃肿,如何让WordPress运行的更加流畅,让别人很快地打开你的站点页面至关重要。在前面的文章中:加速WordPress:将Gravatar头像缓存到本地,我们提到了其中的头像优化,那么今天将带来更多的优化方法。
  优化方法一大堆,无非是通过以下几点:
  常规的前端性能优化
  无论你的网站是基于什么后台技术实现的,被访问者访问的时候,总是会生成常规的 HTML、CSS、JavaScript 等文件发送回客户端。要想提速你的网站,可以先从前端方面进行优化。
  前端的性能优化是一个很深的东西,有很多技巧和方法,但是你可能只是一个站长而并不是专业的前端工程师,所以这里我只总结几个基础却又很有效的前端性能优化技巧:
  压缩图片:图片的下载在网页打开的过程中,占用很多时间,而如果对这些图片进行压缩或者其他技巧(例如 lazy load)就可以减少这方面的时间。实践证明,对 jpg 图片进行 80% 的压缩,既保证了肉眼看不出质量问题又可以减少一些尺寸,对 png 格式的图片,可以使用TinyPNG 来压缩。
  合并文件:这里的文件主要是指 CSS、JavaScript 文件,页面中每多一个 CSS、JavaScript 文件,浏览器就会多一个 HTTP 请求,就会多一个等待时间。理想状态下,最多只有一个 CSS、JavaScript 文件,并且进行压缩使其文件尽可能小,这方面建议使用 WP Minify 插件。如果有能力的,还可以合并图标,把一些小图片合并起来,做成 CSS Sprite。
  使用 CDN:假如你的服务器在北京,北京本地访问起来就会超快,但是广东地区的访问者可能会由于距离和线路问题感觉很慢。成熟的 CDN 服务商在全国各地都会有服务器,如果你把静态文件放在上面,广东地区访问你的网站,会从广东附近的服务器上下载文件,而且 CDN 的服务器和宽带为下载做了优化,速度一般会超过你的服务器,这样就可以大大的提速了,目前一般建议使用七牛云存储来加速静态文件,这里有 WordPress 插件:七牛镜像存储 WordPress 插件。WordPress主题站是使用的又拍云储存,详见站点底部信息。
  对于普通站长,了解这些就可以了,下面来谈谈 WordPress 站点上的优化。
  为 WordPress 安装缓存插件
  缓存是提升速度非常重要的东西。当你访问一个网站,进行过缓存优化的,会将一些图片和 CSS、JS 文件缓存到你的电脑中。当你下一次访问的时候,浏览器发现缓存中的这些文件没有过期,就立刻从缓存中调用出来,就不再从你服务器上下载了。这样,就只需要下载 几KB 你写的文字就Ok了,当然打开速度就飞快了。
  WordPress 缓存,要看你的服务器的支持程度,如果你的服务器已经安装了内存缓存这些组件,安装 Memcached 插件是最优化,如果是虚拟主机,建议安装了 WP Super Cache。
  使用 .htaccess 文件进行缓存
  面是通过安装插件来进行缓存,如果你不想安装插件,可以使用下面的方法进行缓存。
  将下面代码按照你的需求修改,放在你 WordPress 站点根目录下面的 .htaccess 文件中即可:

  1. # 缓存有效时间 1 年#http://www.wpmee.com <FilesMatch “.(ico|pdf|flv)$”> Header set Cache-Control “max-age=29030400, public”  
  2. # 缓存有效时间 1 周 <FilesMatch “.(jpg|jpeg|png|gif|swf)$”> Header set Cache-Control “max-age=604800, public”  
  3. # 缓存有效时间 2 天 <FilesMatch “.(xml|txt|css|js)$”> Header set Cache-Control “max-age=172800, proxy-revalidate”  
  4. # 缓存有效时间 1 分钟 <FilesMatch “.(html|htm|php)$”> Header set Cache-Control “max-age=60, private, proxy-revalidate”  

上面代码做了简单的注释,缓存时间主要靠下面的 max-age 参数,是以秒作为单位的,缓存时间上面的参数是要缓存的文件类型。
  注意,缓存虽然很好用,但是并非缓存时间越长越好。有些静态的文件,很长时间都不会改变其内容,就可以设置时间长一些。有些动态的文件,经常修改的,就需要设置时间短一些。曾经有个好友的博客一个月没有更新了,问了他一下才知道是缓存设置错了,结果导致打开的时候还是很久之前的内容。
  减少数据库查询
  动态网站肯定要对数据库进行一些查询,而每次查询,都要建立一个数据库连接,然后等待数据库返回数据并输出。这个过程就要浪费时间。WordPress 上面有很多不必要的查询和用不到的功能,去掉这些可以提速。
  可以使用下面这段代码来查看一下你的 WordPress 建立了多少查询,你可以把它复制到主题目录下面的 functions.php 文件中,就可以在底部看到相关信息:

  1. add_action(   
  2.   ‘wp_footer’, ‘wpjam_page_speed’   
  3. );  
  4. function wpjam_page_speed() {   
  5.   date_default_timezone_set(   
  6.     get_option( ‘timezone_string’ )   
  7.   );   
  8.   $content = ‘[ ‘ . date( ‘Y-m-d H:i:s T’ ) . ‘ ] ‘;   
  9.   $content .= ‘页面生成时间 ‘;   
  10.   $content .= timer_stop( $display = 0, $precision = 2 );   
  11.   $content .= ‘ 查询 ‘;   
  12.   $content .= get_num_queries();  
  13.   $content .= ‘ 次’;   
  14.   if( ! current_user_can( ‘administrator’ ) )   
  15.   $content = “”;   
  16.   echo $content;   
  17. }  

至于如何进行这块的优化,在我爱水煮鱼中有很多关闭无用功能的技巧,你可以按照自己的需求来搜索一下。
  找个靠谱的主机
  当然,最重要的也就是找个靠谱的主机了,首先是推荐备案选择国内主机,貌似备案也不是多难,只是过程等待时间略长了点。目前WordPress主题站使用的是阿里云的服务器,效果非常棒!