随着百度开放HTTPS站点收录,越来越多的网站开始支持HTTPS,一方面是由于其安全性,另一方面也由于百度、谷歌等搜索引擎明确表明在权重上面会有所倾斜。但是考虑到性能的问题,我们并未第一时间跟进支持HTTPS,促使我们启用HTTPS的主要原因还是因为劫持。就是在访问过程中会发现页面会被跳转到一个空白页,然后再跳转回访问的页面,这个是我无法忍受的,所以考虑之后选择开启HTTPS。
经验分享
加载慢问题
网站开启HTTPS后,打开速度明显的慢了很多,响应时间能达到3、4秒甚至更长,这里推荐一个测速的网站:www.17ce.com,使用17ce可以大致的了解网站在全国各地的访问速度情况。启用HTTPS后17ce的结果基本上是一片红色,甚至有很多链接超时的情况出现。随后我们开始分析测试,发现直接访问静态文件的话,速度还是比较理想的,只要一访问wordpress就会特别慢,即时开启了缓存插件效果也很差。不过既然访问静态文件快的话,我们是否可以把页面全部缓存成静态的HTML页面呢?
想到这点之后,我们便开始分析有没有相关插件可以实现页面缓存的功能,发现最符合要求的就是cos-html-cache插件了,很可惜插件超过2年未更新,担心会出现兼容问题所以没有采用。后续还试了WP Super Cache,按理说采用mod_rewrite模式访问的就是缓存文件,速度应该会变快才对,实际效果却依然很慢,猜测可能是nginx的伪静态规则写的不对。最后试了WP Fastest Cache,也是没有nginx的伪静态规则,不过分析.htaccess文件发现规则比WP Super Cache的简单,所以耐着性子针对WP Fastest Cache重新写了nginx的伪静态规则,大致原理就是如果本地存在缓存文件,则直接返回缓存的静态HTML文件给浏览器,不需要经过wordpress拿数据,在多次修改测试之后,总算成功了,页面加载时间已经接近正常http访问的时间。
更多关于WP Fastest Cache的介绍:WP Fastest Cache WordPress缓存加速插件
证书的问题
开启HTTPS是需要SSL证书才行的,目前大部分的证书都是需要花钱买的,并且价格也不低。不过免费的证书也是有的,之前沃通的免费证书还是挺好用的,不过目前已经停止提供免费证书服务了,这里再推荐两个:Let’s Encrypt和StartSSL。
Let’s Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,来头好像不小,不过免费证书有效时长为3个月,到期需要手动续期,或者写脚本定时运行续期。
StartSSL也是一个比较知名的提供免费证书的服务商,免费证书有效期是3年,可以添加多个域名。
另外对于腾讯云用户来说,可以申请到1年的免费SSL证书,由赛门铁克(Symantec)顶级根证书签发,在官网的价格是1900元/年。如果是腾讯云用户的话,那么还是非常推荐使用这个证书的。
SSL检查的问题
SSL证书配置好了以后可以通过https://www.ssllabs.com/ssltest/ 进行检查,ssllabs会对你的网站进行评级,并给出一些优化建议。
大致就是这些,具体的安装大家可以查找相关资料,这里就不多介绍了。
评论列表(3)
可以求一个贵站的 WP Fastest Cache 重写nginx的伪静态规则吗? 谢谢 ,正准备用 这个缓存插件 。
还有一个咨询一下如果用七牛或者又拍 装了这个WP Fastest插件的CDN功能就直接可以用了吗 还是要装wp 七牛 或者又拍的配合?
谢谢
location / {
# if the requested file exists, return it immediately
if (-f $request_filename) {
break;
}
set $rewrite 1;
if ($request_method = POST) {
set $rewrite 0;
}
if ($query_string != "") {
set $rewrite 0;
}
if ($http_cookie ~* "(comment_author|wp\-postpass|wordpress_logged_in|wptouch_switch_toggle)") {
set $rewrite 0;
}
set $file_ext "";
if (-f "$document_root/wp-content/cache/all$request_uri/index.html") {
set $file_ext .html;
}
if (-f "$document_root/wp-content/cache/all$request_uri/index.xml") {
set $file_ext .xml;
}
if ($file_ext = "") {
set $rewrite 0;
}
if ($rewrite = 1) {
rewrite .* "/wp-content/cache/all$request_uri/index$file_ext" last;
}
# all other requests go to WordPress
if (!-e $request_filename) {
rewrite . /index.php last;
}
}
非常感谢 已经开启 已经收藏 会常来发现新技术^_^