WordPress 配合 KeyCDN 实现全站 CDN(与免费 SSL 证书) - V2EX
ZE3kr

WordPress 配合 KeyCDN 实现全站 CDN(与免费 SSL 证书)

  •  
  •   ZE3kr Feb 12, 2016 5529 views
    This topic created in 3747 days ago, the information mentioned may be changed or developed.

    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 代码)

    源码和说明在 GitHub 上

    目前存在的问题就是在自定义页面中,不能加载实时浏览(由于跨域的问题,然而我已经做了各种测试,还是没用,似乎是 KeyCDN 的问题),所以也不能在自定义页面里直接修改 widgets ,不过你可以去 /wp-admin/widgets.php 修改。这个插件支持 IP 段的白名单制,如果你静态资源走 KeyCDN ,动态资源又走了别的代理如 CloudFlare ,那么这个就很好用,在也不用担忧暴露源站 IP 了。

    我的网站就用了全站 CDN ,虽然是 WordPress ,但速度不亚于静态博客(前提是有缓存的情况下), Edge 服务器上的缓存我设到了一周,欢迎体验 https://www.ze3kr.com

    Supplement 1    Feb 16, 2016

    现在这个插件已经发布到 WordPress.org 上,大家可以直接在线安装咯!wordpress.org/plugins/full-site-cache-kc/

    Supplement 2    May 5, 2017
    全站 CDN 详细的内容请参见 https://ze3kr.com/2017/01/wordpress-full-site-cdn/
    3 replies    2016-03-19 09:19:53 +08:00
    SuperFashi
        1
    SuperFashi  
       Feb 12, 2016 via Android
    滋瓷
    kamin
        2
    kamin  
       Feb 29, 2016
    删除插件,解析回原站后。

    部分文章会从原来的 www.xxx.com 301 到 abc.xxx.com 。。。
    ZE3kr
        3
    ZE3kr  
    OP
       Mar 19, 2016 via iPhone
    @kamin 不清楚是什么问题,也许是浏览器缓存原因,建议删了插件后也删掉 wp-config.php 原来的代码。现在这个插件已经发布了 2.0.0 版本,更好用了。
    About     Help     Advertise     Blog     API     FAQ     Solana     5934 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 51ms UTC 06:56 PVG 14:56 LAX 23:56 JFK 02:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86