V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
artoostark
V2EX  ›  奇思妙想

将 WordPress 前后端分离

  •  
  •   artoostark · 2018-04-25 11:40:39 +08:00 · 7981 次点击
    这是一个创建于 2410 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前些时间,发现两个真正的 WordPress 静态化插件—— Simply Static ( https://wordpress.org/plugins/simply-static/) 和 WP Static HTML Output ( https://wordpress.org/plugins/static-html-output-plugin/)。

    于是我就在想,是否可以把用来发布内容的站点作为后端,而输出的静态 HTML 作为前端主站?

    跟别人讨论了一下,我的思路基本都被赞成。

    以下是讨论内容,顺序有点乱,不喜勿喷。

    我在想,是不是可以把发布内容的网站改域名作为后端,比如 admin.demo.com
    我最近在找纯静态化插件,发现这两个.这个插件生成的 HTML 静态文件,可以用 www 域名绑定。
    图片,JS,CSS 等托管到第三方,或者自己的专用服务器上。
    再套一些 CDN,做就近部署,主动分发到离用户最近的节点上。
    这样做的话,真正发布内容的网站压力就小很多。
    只需要关注专门的 HTML 静态文件的服务器,和托管图片、JS、CSS 的服务器。
    当然,它们也可以放在一台服务器上面。
    蛮适合媒体网站。不过,要考虑评论等交互的问题,到时候可能只能用第三方评论。
    大部分人只是浏览,不怎么发评论做交互,压力很小。
    最后说一下,插件生成的内容里,没有给搜索引擎看的 sitemap.xml 文件。
    插件可能需要改造一下,或者直接给作者反馈。
    另外,需要手动加 robots 文件,不加也可以。
    改造完成以后,以后对后端的操作失误,应该不会影响到前端内容的展示。

    这个方案比较适合中大型网站,暂时还没有仔细研究,说出来听一听大家的意见。
    24 条回复    2024-05-31 17:15:58 +08:00
    edsheeran
        1
    edsheeran  
       2018-04-25 11:55:49 +08:00
    artoostark
        2
    artoostark  
    OP
       2018-04-25 11:57:33 +08:00
    @edsheeran 我用了 Redis 和 Memcached。这个不太适合我,我知道这个插件。
    night98
        3
    night98  
       2018-04-25 11:59:42 +08:00 via Android
    在用 wpsupercache,小站够用了。
    artoostark
        4
    artoostark  
    OP
       2018-04-25 12:00:51 +08:00
    @night98 所以最后一句是:这个方案比较适合中大型网站。
    just1
        5
    just1  
       2018-04-25 12:02:15 +08:00 via Android
    想法是没问题的,但是改完这还是 wp 吗
    还不如重写。。
    artoostark
        6
    artoostark  
    OP
       2018-04-25 12:03:59 +08:00
    @just1 是啊。WordPress 生态圈好啊。不想自己完全重写。
    wangding85
        7
    wangding85  
       2018-04-25 12:41:28 +08:00 via iPhone
    之前搞过类似的,但是发现服务端改动太大,已经脱离 WP 框架变成写 php 的 api 了。之后采取了 twig 这个模版语言,好歹不用 php 和 html 混写
    artoostark
        8
    artoostark  
    OP
       2018-04-25 13:17:44 +08:00
    @wangding85 看介绍还行。
    qiaobeier
        9
    qiaobeier  
       2018-04-25 14:10:17 +08:00
    看标题我还以为在讨论 wp 的 restful api
    qiaobeier
        10
    qiaobeier  
       2018-04-25 14:14:13 +08:00
    另外你说的这些功能很像这个产品 https://getshifter.io
    artoostark
        11
    artoostark  
    OP
       2018-04-25 16:07:03 +08:00
    @qiaobeier 进去看了一下,WordPress 是部署在它上面,不太想要这种。
    qiaobeier
        12
    qiaobeier  
       2018-04-25 16:15:30 +08:00
    @artoostark 我只是说功能和你说的有点像,也就是 wp 使用和创建生成的文件在 2 个地方,生成文件后自动发布到 aws,完全静态化。但他这个产品功能很不完善,也许我试用的免费版本的关系。
    night98
        13
    night98  
       2018-04-25 17:15:50 +08:00
    你这个说实话其实基本等于 hexo,hugo 这类静态页面生成器了,这样的话就失去了 php 的特点呢。
    shootsoft
        14
    shootsoft  
       2018-04-25 21:14:33 +08:00 via iPhone
    首先,要看你是怎么定义“大中型网站”的,如果只是有很多页面,你可以试试,当页面数量达到几十万的时候,全站更新效率就会比较低。如果是有很多用户交互行为,频繁更新整个页面,性能和体验可能不如用 redis 或者 memcache 好。
    artoostark
        15
    artoostark  
    OP
       2018-04-25 21:26:44 +08:00
    @shootsoft 如果整体更新一遍确实蛋疼。只能针对性的对有变动的内容做更新。
    meathill
        16
    meathill  
       2018-04-25 22:58:48 +08:00
    中大型的网站直接上 CDN 就可以了,对静态化的需求不是很大。如果小型网站,七牛每月 10G 流量差不多也够了。
    flynaj
        17
    flynaj  
       2018-04-26 13:02:45 +08:00 via Android
    分离开就是静态网了,那你不如用其它 cms,dedecms 之类的。
    hoythan
        18
    hoythan  
       2018-04-30 04:30:45 +08:00
    如果需要用到 wp 前后端分离的话。。。
    https://github.com/hoythan/DFOXA-WordPressAPI
    artoostark
        19
    artoostark  
    OP
       2018-05-01 23:32:17 +08:00
    @hoythan 好像还不错。
    有兴趣加入我们的 WordPress 社区么?
    kouhe3
        20
    kouhe3  
       2023-01-23 11:12:18 +08:00
    ~~要不写一个类似 WordPress.com 的安卓客户端,实现前后端分离(?)~~

    我今天尝试了 simply static, 发现这东西太 GOOD 了。尤其是它能把静态文件保存到另一个目录,更方便了。
    不过还是有个典型问题:搜索怎么办。

    我看 blogger 挺好的,文章页面是 HTML, 搜素界面还是动态的.

    WordPress 能不能 PHP 和 HTML 混着用?
    artoostark
        21
    artoostark  
    OP
       2023-02-12 11:32:16 +08:00
    @kouhe3 搜索可以通过 Rest Api 接口,
    自带的可能不好用,
    有时间可以自己搞一个。
    抱歉好久没上来了。
    artoostark
        22
    artoostark  
    OP
       2023-02-12 13:00:09 +08:00
    @kouhe3 可以使用 GraphQL 提取文章数据,然后用静态站点生成器输出。
    linyongxin
        23
    linyongxin  
       191 天前
    WordPress 自带的 wp-rest API ,做成 headless cms 按理更简单,已经有好几个基于 uniapp 的多端小程序实现了,我一直在用静态托管
    artoostark
        24
    artoostark  
    OP
       182 天前
    @linyongxin 市面上有一些企业提供的商业方案,开源的还么发现特别简单好用的。
    以下是两个参考服务。

    https://getshifter.io/
    https://www.strattic.com/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2545 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:13 · PVG 09:13 · LAX 17:13 · JFK 20:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.