gpt4 book ai didi

node.js - 需要解释 Docpad 持久性

转载 作者:搜寻专家 更新时间:2023-10-31 23:01:00 28 4
gpt4 key购买 nike

我对 Docpad 中数据持久化背后的架构感到很困惑。从博客和论坛中,我了解到内存中(和/或目录外)用于生成的内容。但 Docpad 的卖点之一是“完全基于文件”。从它的声音来看,将它托管在 Heroku 或任何临时文件系统上似乎不合逻辑。谁能给出一些解释/澄清?

最佳答案

DocPad 被定位为下一代网络架构。这个思维导图展示了为什么我们这么调用它:

DocPad Architecture Vision http://d.pr/i/jmmZ+

工作流程是这样的:

  1. 进口商从任何来源引入数据,无论是本地文件系统、tumblr 还是 mongo 数据库。
  2. 这些被注入(inject)到 DocPad 内存数据库中
  3. 在生成时,DocPad会渲染需要渲染的内容,并将静态内容输出到out目录
  4. 动态文档(根据每个请求重新呈现的文档)和动态功能(服务器扩展)现在能够利用内存数据库并执行高级的酷东西,如文件上传、联系表单、搜索页面等

从这个意义上说,DocPad 是具有静态站点生成能力和动态站点生成能力的下一代 Web 架构。 DocPad 与传统 web 架构的区别在于,传统 web 架构将内容和模板视为独立的存在,而 DocPad 将它们视为相同的,只是通过它们的扩展名分开。传统的 Web 架构在默认情况下也是动态的,静态站点生成是通过缓存完成的,而不是相反,默认情况下是静态的。

由于这种加载内存数据库情况下的所有内容,我们在生成和生成后的性能方面遭受了一些成长的痛苦。 Discussion here.然而,没有什么是不能用足够的时间和资源解决的。尽管如此,由于静态特性(更快的请求)和异步特性(更快的生成),DocPad 仍将比您的传统 Web 架构更快。

就处理文件上传的方式而言:

  • 如果您使用 DocPad 创建静态网站,您将在其他地方有一个后端 API 服务器,您也可以进行上传并将数据作为单页应用程序样式加载到 DocPad 中。

  • 如果您使用 DocPad 创建动态网站,您可以在 Heroku 等服务器上托管 DocPad,并扩展该服务器以处理将文件上传到 Amazon S3、Dropbox 或 MongoDB 等目的地的过程.然后,您可以选择通过 templateData 作为链接公开文件,或将文件作为文件注入(inject) DocPad 内存数据库。您选择哪一个取决于您是只想引用上传内容还是将其视为 DocPad 世界中的一等公民(它有自己的 URL 和页面)。

对于动态站点,我会说我真的采用静态站点 + 单页应用程序方法。您可以获得诸如响应式设计、离线支持、真正快速的用户体验等好处,如果不这样做,无论您在哪种 Web 架构上构建它,您都很难通过动态站点方法来实现它。

关于node.js - 需要解释 Docpad 持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18016681/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com