KeyCDN 是一个不错的 CDN 服务,中国访问走香港节点,有缓存的情况下页面加载能在 100~200ms 左右, ping 在 50ms 左右,提供 Letsencrypt 的免费 SSL 证书(它也是 Letsencrypt 的赞助商之一),可以分别设置 Edge 服务器和客户端缓存。从我给的链接注册能拿到 $10 的余额,相当于 250 GB 流量,绝对够用好久了。https://www.keycdn.com/?a=7126
现在的思路就是将 Edge 服务器的缓存设置的足够长,然后服务器判断(在 WordPress 主要脚本加载之前)是否是 KeyCDN ,如果是,则强制清除 $_COOKIE
参数(这样就不会显示 Admin Bar 了)。然后使用另一个域名的网址作为后台管理,例如原本的主页为 https://www.example.com
的,后台管理页面则为 https://wp-admin.example.com/wp-admin/
;原本主页为 https://blog.example.com
,后台管理页面为 https://wp-admin-blog.example.com/wp-admin/
。方法是在后台 Siteurl 和 Homeurl 设置的不同,但是如果在多站点模式下,貌似这样设置存在问题,于是我就直接在 WordPress 加载前修改 $_SERVER
,伪造成正常站点的 URL 。除此之外,分别进行动态和静态区分,如果 $_SERVER['SCRIPT_NAME']
为 /index.php ,那就当作静态,其余为动态。两个不同域名站点分别为静态和动态,如果访问的不属于该域名类型,就直接 301 跳转到另一个域名。
然后,根据不同页面类型设置不同的 Cache-Tag Header ,比如主页、搜索页、 Sitemap 、 Feed 、日期页、分类页和标签页中有一个 archive
的 tag ,文章或页面页有一个关于页面 ID 的 tag 。当有一篇文章或页面更新时,删除这个页面 ID 的 tag 和 archive
的 tag ,这样基本上就能达到全面更新了,而且其它不相关页面缓存还在。
为了方便大家使用,我已经把这个功能做成了插件的形式(然而还是需要手动修改一些 PHP 代码)
目前存在的问题就是在自定义页面中,不能加载实时浏览(由于跨域的问题,然而我已经做了各种测试,还是没用,似乎是 KeyCDN 的问题),所以也不能在自定义页面里直接修改 widgets ,不过你可以去 /wp-admin/widgets.php
修改。这个插件支持 IP 段的白名单制,如果你静态资源走 KeyCDN ,动态资源又走了别的代理如 CloudFlare ,那么这个就很好用,在也不用担忧暴露源站 IP 了。
我的网站就用了全站 CDN ,虽然是 WordPress ,但速度不亚于静态博客(前提是有缓存的情况下), Edge 服务器上的缓存我设到了一周,欢迎体验 https://www.ze3kr.com
现在这个插件已经发布到 WordPress.org 上,大家可以直接在线安装咯!wordpress.org/plugins/full-site-cache-kc/
1
SuperFashi 2016-02-12 23:52:30 +08:00 via Android
滋瓷
|
2
kamin 2016-02-29 17:38:55 +08:00
|