從靜態(tài)頁(yè)面到 JAM 棧,CMS 的歷史就是開源和 Web 變遷的核心。
內(nèi)容管理系統(tǒng)Content Management System(CMS)是一個(gè)多產(chǎn)的軟件類別,其涵蓋了所有創(chuàng)建和修改數(shù)字內(nèi)容的應(yīng)用程序。因此,CMS 的歷史可以追溯到由 蒂姆-伯納斯-李在 1990 年建立的歷史上的第一個(gè)網(wǎng)站也就不足為奇了,該網(wǎng)站是以基于互聯(lián)網(wǎng)的超文本系統(tǒng) HTML 為模型,只包含了文本和鏈接。
萬(wàn)維網(wǎng)(WWW)的雛形是靜態(tài)網(wǎng)站,無(wú)需后端數(shù)據(jù)庫(kù)即可提供內(nèi)容。它們消耗的計(jì)算資源很少,所以加載速度很快 —— 因?yàn)闆](méi)有數(shù)據(jù)庫(kù)查詢、沒(méi)有模板渲染、也沒(méi)有客戶端-服務(wù)器請(qǐng)求的處理。鑒于那時(shí)很少有人經(jīng)常“上網(wǎng)沖浪”,特別是與今天相比,Web 流量也很少。
當(dāng)然,促進(jìn)了這種互操作性都是開源軟件。事實(shí)上,開源在 CMS 的演變中一直扮演著重要的角色。
CMS 的崛起
快進(jìn)到九十年代中期,隨著萬(wàn)維網(wǎng)的普及和網(wǎng)站對(duì)頻繁更新的需求的增加 —— 這與它最初托管手冊(cè)式的靜態(tài)內(nèi)容有所不同。這導(dǎo)致了大量的 CMS 產(chǎn)品的出現(xiàn),如 FileNet、Vignette 的StoryBuilder、Documentum 和其他許多產(chǎn)品。這些都是專有的閉源產(chǎn)品,這在那個(gè)時(shí)期并不罕見(jiàn)。
然而,在 21 世紀(jì)初,開源的 CMS 替代品出現(xiàn)了,這包括 WordPress、Drupal 和 Joomla。WordPress 包含一個(gè)可擴(kuò)展的插件架構(gòu),并提供了可用于建立網(wǎng)站的模板,而不要求用戶具備 HTML 和 CSS 知識(shí)。WordPress CMS 軟件安裝在 Web 服務(wù)器上,通常與 MySQL 或 MariaDB 數(shù)據(jù)庫(kù)(當(dāng)然,兩者都是開源的)配合。CMS 是開源的這一事實(shí)在一定程度上加速了向 WordPress 的重大轉(zhuǎn)變。
即使在今天,仍有大約三分之一的網(wǎng)站是使用這些第一代內(nèi)容管理系統(tǒng)建立的。這些傳統(tǒng)的 CMS 是單體系統(tǒng),包括后端用戶界面、插件、前端模板、層疊樣式表(CSS)、Web 服務(wù)器和數(shù)據(jù)庫(kù)。每當(dāng)用戶請(qǐng)求一個(gè)網(wǎng)站頁(yè)面時(shí),服務(wù)器首先查詢數(shù)據(jù)庫(kù),然后將結(jié)果與來(lái)自頁(yè)面標(biāo)記和插件的數(shù)據(jù)結(jié)合起來(lái),在瀏覽器中生成一個(gè) HTML 文檔。
趨向于 LAMP 棧
開源 CMS 的出現(xiàn)與建立在 LAMP(Linux、Apache、MySQL 和 PHP/Perl/Python)棧上的基礎(chǔ)設(shè)施是一致的。這種新的結(jié)構(gòu)代表了單體 Web 開發(fā)的開始,它使動(dòng)態(tài)網(wǎng)站的創(chuàng)建能夠使用數(shù)據(jù)庫(kù)查詢,為不同的終端用戶提供獨(dú)特的內(nèi)容。在這一點(diǎn)上,以前放在服務(wù)器上的靜態(tài)網(wǎng)站模式真正開始消失。(靜態(tài)網(wǎng)站模式是指由文本和鏈接組成的單個(gè)文件,如 HTML、CSS、JavaScript 等,以同樣的方式傳遞給所有的終端用戶。)
移動(dòng) Web 改變了一切
隨著我們逐漸步入 2000 年代的第一個(gè)十年,早期的移動(dòng)設(shè)備如 Palm 和黑莓提供了對(duì) Web 內(nèi)容的訪問(wèn),然后在 2010 年左右推出的智能手機(jī)和平板電腦讓越來(lái)越多的用戶可以通過(guò)移動(dòng)設(shè)備訪問(wèn) Web 。2016 年,天平傾斜,全球 來(lái)自移動(dòng)設(shè)備和平板電腦的 Web 訪問(wèn)量超過(guò)了臺(tái)式機(jī)。
單體的 CMS 并不適合為這些不同類型的訪問(wèn)設(shè)備提供內(nèi)容,這就需要不同版本的網(wǎng)站 —— 通常是針對(duì)移動(dòng)用戶的精簡(jiǎn)版網(wǎng)站。新的可以訪問(wèn) WEB 的設(shè)備類型的出現(xiàn),如智能手表、游戲機(jī)和語(yǔ)音助手(如 Alexa)5,只是加劇了這個(gè)問(wèn)題,對(duì)全渠道內(nèi)容交付的需求變得很明顯。
無(wú)頭 CMS 和 JAM 棧的出現(xiàn)
無(wú)頭 CMS 將后端(用來(lái)存儲(chǔ)所有內(nèi)容、數(shù)據(jù)庫(kù)和文件)與前端解耦。通常,無(wú)頭 CMS 使用 API,這樣就可以訪問(wèn)數(shù)據(jù)庫(kù)(SQL 和 NoSQL)和文件的內(nèi)容,以便在網(wǎng)站、智能手機(jī)、甚至物聯(lián)網(wǎng)(IoT)設(shè)備上顯示。此外,無(wú)頭 CMS 與前端框架無(wú)關(guān),使其與各種靜態(tài)網(wǎng)站生成器和前端框架(如 Gatsby.js、Next.js、Nuxt.js、Angular、React 和 Vue.js)兼容,這使開發(fā)人員可以自由選擇他們喜歡的工具。
無(wú)頭 CMS 特別適用于 JAM(Javascript、API 和 Markup)棧的 Web 開發(fā)架構(gòu),該架構(gòu)正在成為一種流行的解決方案,因?yàn)樗芴峁└玫?Web 性能和 SEO 排名,以及強(qiáng)大的安全措施。JAM 棧不依賴于 Web 服務(wù)器,當(dāng)有請(qǐng)求時(shí)可以立即提供靜態(tài)文件。不需要查詢數(shù)據(jù)庫(kù),因?yàn)槲募呀?jīng)被編譯并提供給瀏覽器。
向無(wú)頭 CMS 的轉(zhuǎn)變是由新一輪的參與者推動(dòng)的,他們有的采用 SaaS 方式,如 Contentful,有的采用自托管的開源替代品,如 Strapi。無(wú)頭 CMS 也在顛覆電子商務(wù)行業(yè),新的軟件編輯器,如 Commerce Layer 和Saleor(也是開源的)提供了解決方案,以真正的全渠道方式管理多個(gè) SKU、價(jià)格和庫(kù)存數(shù)據(jù)。
總結(jié)
在 CMS 的整個(gè)演變過(guò)程中,由互聯(lián)網(wǎng)上的信息消費(fèi)方式驅(qū)動(dòng),開源軟件也沿著同樣的趨勢(shì)發(fā)展,新技術(shù)不斷出現(xiàn)以解決出現(xiàn)的需求。事實(shí)上,在內(nèi)容管理系統(tǒng)、萬(wàn)維網(wǎng)和開源之間似乎存在著一種相互依賴的關(guān)系。管理越來(lái)越多的內(nèi)容的需求不會(huì)很快消失。我們完全有理由期待在未來(lái)更廣泛地采用開源軟件。