许多网络开发人员第一次尝试将内容放到网上,包括一个Wordpress网站。早在学习软件开发之前,我就尝试建立一个网站,尽管我不知道什么是 “CMS”,但在互联网上获得一些东西还是出乎意料地容易。快十年了,我意识到我仍然对CMS没有一个具体的概念,尽管我做了三年的网络开发。让我们深入了解一下这个概念。
传统的CMS
CMS是内容管理系统的缩写–最好把它看成是一个网络架构。我们知道网络的构件是前端(HTML、CSS、JS)和后端(服务器+数据库、API,用多种语言构建)。传统的内容管理系统可以处理这两点,甚至更多。
当客户向一个由CMS支持的网站提出请求时,这是典型的工作流程。
运行在服务器上的中间件处理该请求
服务器从数据库中查询它所需要的内容
中间件生成HTML页面并将其返回给客户端
优点和缺点
与其前身相比,CMS系统在组织和可访问性方面有了很大的改进–手工编写所有页面,并通过FTP将文件上传到服务器。页面可以被模板化和生成,使网站更容易保持动态。使用传统的CMS,SEO(搜索引擎优化)也更容易管理。
易用性是CMS获得普及的很大一部分原因。内容创建者可以通过管理门户向网站推送内容,而开发人员则负责网站页面的工程设计。关注点的分离使得组织和同时工作的速度更快。
这也有利于那些不具备编码知识但仍想建立网站的用户。Wordpress,一个开源的CMS,为非编码人员提供了模板、托管和网站监控的简易工具。然而,这类用户受制于那些模板的风格,他们在没有编码技能的情况下对网站的定制是有限度的。
一个编辑Wordpress网站的例子。
这种结构的一个很大的缺点是,标记必须在服务器端动态生成,导致大量的TTFB(Time To First Bit)。用户可能需要很长时间才能看到任何东西,这取决于服务器的工作负荷。你也许可以通过优化来提高速度,但这是有限度的,而且你也可能会遇到瓶颈问题。一旦你开始添加日志、电子商务、分析,基础设施就会变得令人生畏,而且会有更多可能出错的关键点。
无头cms–现代方式
你可能会看到这被称为解耦CMS,这实际上与无头CMS略有不同。无头CMS是指前端已经完全分离。CMS已经转变为一个内容服务机器–它被分解成可以通过一个中央API访问的组件。这种结构有许多好处,在传统的基础上有所改进。
API允许更少的夹点和更容易的错误处理,同时保持一个RESTful系统的单一真理源。API可以与其他技术沟通,允许向RSS Feeds、智能手表和其他物联网设备传送内容。它还被构建为易于扩展和面向未来,因此任何人都可以从它的内容中提取。
前端可以在客户端进行渲染,提供更好的用户体验,减少TTFB。页面可以是自定义的或模板化的,并以开发者选择的任何框架/语言制作。开发人员可以使用构建工具与API进行通信,并生成标记,这样就可以在动态中高效地构建。
最后的思考
虽然无头CMS在过去几年中越来越受欢迎,但仍有很多公司和网站仍在使用传统模式。如果无头系统成为常态,而旧系统又需要移植,那么能够同时使用这两种系统并了解其中的区别,将是开发人员必须具备的一项重要技能。