年前明月就已经将我手里的三个博客站都开启了七牛云,并在年后启用本地缓存神器插件 WP-Rocket ,至此我的 CDN 加速方案: WordPress 本地缓存+七牛云静态存储+七牛云融合 CDN (只针对静态存储空间)算是告一段落了。
本着“生命不止、折腾不息”的宗旨,又利用七牛云存储缓存了 Gravatar 头像,解决了 Gravatar 被“墙”后总是拖慢 WordPress 的问题。
为了更有效率的使用七牛云,一口气注册并实名认证了三个七牛账户,根据不同博客站和需求来分别使用,并且都绑定了自定义域名,现在无论是头像、文章图片、缩略图调用都已部署成自由的二级域名,感觉逼格提升了不少,嘿嘿!
今天就分享几个最近几天折腾而来的针对七牛云的实用性蛮高的代码,以便有需要的站长们使用:
1、 WordPress 首页、文章列表缩略图调用七牛图片
其实这段代码利用缓存插件 WP Super Cache 和 W3 Total Cache 里面的 CDN 支持就可以实现的,但是这两个插件严重拖慢了 WordPress 后台载入速度,明月也是不得不放弃,还好有 WP-Rocket 这个神器来替换,但是 WP-Rocket 对七牛云的支持就简单的多了,无法实现缩略图调用七牛图片,所以才找到了这段代码,昨晚我的博客已经率先使用上了,目前本博已经通过下面的代码实现了WordPress 首页、文章列表缩略图调用七牛图片,再次减轻了主机负载。
- function QiNiuCDN(){
- function Rewrite_URI($html){
- /* 前面是需要用到七牛的域名也就是博客网站的域名,后面是需要加速的静态文件类型,使用分隔符 | 隔开即可 */
- $pattern = ‘/http:\/\/(blog\.|)ymanz\.com\/wp-content\/uploads([^“\’]*?)\.(js|css|jpg|gif|png|jpeg|bmp|webp|svg|tiff|webm|mp3|mp4|3gp|mov|ico)/i’;
- /* 七牛CDN空间地址,请自行替换成实际空间地址或者空间绑定的自定义域名 */
- $replacement = ‘http://空间地址或者空间绑定的自定义域名/wp-content/uploads$2.$3’;
- $html = preg_replace($pattern, $replacement, $html);
- return $html;
- }
- if(!is_admin()){
- ob_start(“Rewrite_URI”);
- }
- }
- add_action(‘init’, ‘QiNiuCDN’);
上述代码的实现可能会消耗一定的七牛云空间以及融合 CDN 流量,如果你的博客网站流量已经多到收费了,那就不建议你采用了,免费情况下还是可以玩玩的,提升装逼逼格!
2、文章内调用七牛图片默认尺寸属性
这段代码比较适合高清图片多的场景,一篇文章内高清、高分辨率图片多的时候会严重影响网页载入效率的,可以借助下面的代码设定一个默认的小尺寸的图片来加快网页载入时间,再配合 WordPress 的图片暗箱功能(就是点击图片看原图)方便用户快速查看原图片(这里需要在编辑文章插入图片时将图片链接到“媒体(图片)文件”的)来变相的实现速度优化,还可以减小一些无谓的七牛云流量消耗。目前,我的博客和主站【玉满斋】都在使用这段代码,效果很明显。
- //设置调用七牛图片默认尺寸属性
- add_filter(‘the_content’, ‘removeimg_size’);
- function removeimg_size($content) {
- global $post;
- //去掉srcset属性
- $content = preg_replace(“/srcset=(‘|\”)(.*?)(‘|\”)/i”, ”, $content);
- //设置图片默认尺寸,下面一行的400即为图片宽高,可以根据情况自己调整
- $content = preg_replace(‘/<img(.*?)width=“(.*?)” height=“(.*?)”(.*?)>/i’, ‘<img$1width=“400” height=“400”$4>’, $content);
- return $content;
- }
使用这段代码,大家不用担心图片被裁剪的有缺失,因为默认都是居中裁剪的,所以几乎没有影响的,并且我还发现在手机移动端载入速度也提升不少,图片小了嘛。
3、替换 WordPress 头像地址为七牛云空间缓存Gravatar的头像地址
- //缓存Gravatar 头像到七牛云存储,WordPress 4.0+ 适用
- function qiniu_avatar($avatar) {
- $avatar = preg_replace(‘/.*\/avatar\/(.*)\?s=([\d]+)&.*.srcset=.*/’,'<img src=“http://你的七牛域名或者绑定的自定义域名/avatar/$1-$2” class=“avatar avatar-$2” height=“$2” width=“$2”>’,$avatar);
- return $avatar;
- }
- add_filter( ‘get_avatar’, ‘qiniu_avatar’, 10, 3 );
这个其实前天的文章【利用七牛云存储缓存Gravatar头像加速 WordPress】里已经分享过了,完全是凑数的,呵呵,我就不多说了,不明白的可以参考前天的文章。
4、评论审核通过后邮件通知评论者
- //评论通过审核后邮件通知评论者
- add_action(‘comment_unapproved_to_approved’, ‘ludou_comment_approved’);
- function ludou_comment_approved($comment) {
- if(is_email($comment->comment_author_email)) {
- $post_link = get_permalink($comment->comment_post_ID);
- // 邮件标题,可自行更改
- $title = ‘您在 [明月登楼博客] 的评论已通过审核’;
- // 邮件内容,按需更改。如果不懂改,可以给我留言
- $body = ‘您在明月登楼博客《<a href=“‘.$post_link.'”>’.get_the_title($comment->comment_post_ID).'</a>》发表的评论:<br />
- ‘.$comment->comment_content.'<br /><br />
- 已通过管理员审核并显示。<br />
- 您可在此查看您的评论:<a href=“‘.get_comment_link( $comment->comment_ID ).'”>前往查看</a>’;
- @wp_mail($comment->comment_author_email, $title, $body, “Content-Type: text/html; charset=UTF-8”);
- }
- }
上述代码大家记得要修改一下提示内容为自己博客的哦,明月个人感觉这是一个很贴心的评论邮件提醒,需要审核的评论还是不少的,审核后通知评论者,其实就是在拉回头客。
最后分享一个鱼哥(我爱水煮鱼)的“防止 WordPress 遭受恶意 URL 请求”的代码:
- //防止 WordPress 遭受恶意 URL 请求。From:http://blog.wpjam.com/m/block-bad-queries/
- if(strlen($_SERVER[‘REQUEST_URI’]) > 384 ||
- strpos($_SERVER[‘REQUEST_URI’], “eval(“) ||
- strpos($_SERVER[‘REQUEST_URI’], “base64”)) {
- @header(“HTTP/1.1 414 Request-URI Too Long”);
- @header(“Status: 414 Request-URI Too Long”);
- @header(“Connection: Close”);
- @exit;
- }
今天分享的代码都是需要放在主题function.php里的,如果担心主题升级或者更换后失效和丢失上述代码,大家可以采用本博【如何方便的在更新主题时保留functions.php里的自定义】一文里的方法,真的很不错的,我一直都是这样用的。