需要Docpad持久性的解释

我很困惑于Docpad中数据如何保存的架构。 从博客和论坛,我知道内存中(和/或出目录)是用于生成的内容。 但Docpad的卖点之一是“完全基于文件”。 从它的声音来看,将其托pipe在Heroku或任何短暂的文件系统似乎并不合逻辑。 任何人都可以提供一些解释/澄清?

DocPad被认为是下一代Web架构。 这个思维导图展示了为什么我们称之为完美:

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

工作stream程如下所示:

  1. import商将数据从任何来源,无论是本地文件系统,tumblr还是mongo数据库。
  2. 这些被注入DocPad内存数据库
  3. 在生成的时候,DocPad将呈现需要呈现的内容,并将静态内容输出到out目录中
  4. dynamic文档(每个请求重新呈现的文档)和dynamic能力(服务器扩展)现在可以利用内存数据库,并执行file upload,联系表单,search页面等任何先进的酷东西

从这个意义上说,DocPad是具有静态站点生成能力和dynamic站点生成能力的下一代Web架构。 DocPad与传统networking架构分开的原因是,传统的networking架构会考虑内容和模板,DocPad认为这些内容是相同的,并且通过扩展来区分。 传统的Web架构默认情况下也是dynamic的,通过caching来完成静态的站点生成,而不是默认情况下静态的。

由于这个负载在内存数据库情况下的一切,我们正在遭受一些在成长和后代的性能方面成长的痛苦。 在这里讨论。 但是没有什么能够用足够的时间和资源来解决的。 无论如何,由于静态特性(更快的请求)以及asynchronous特性(更快的代),DocPad仍然会比传统的Web架构更快。

就你将如何处理file upload而言:

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

  • 如果您正在使用DocPad制作一个dynamic网站,您可以在Heroku等服务器上托pipeDocPad,然后扩展服务器以将file upload到Amazon S3,Dropbox或MongoDB等目的地。 然后,您可以select通过templateData作为链接公开文件,或者将文件作为文件注入到DocPad内存数据库中。 您select的是您是否仅仅想引用上传文件,或将其作为DocPad Universe中的头等公民(它获取自己的URL和页面)。

对于dynamic网站,我会说我真的去静态网站+单页面应用程序的方法。 您可以获得诸如响应式devise,离线支持,非常快速的用户体验(UX)等好处,而无需使用这种方法,您可以使用dynamic站点方法完成任务,无论您使用哪种Web体系结构。

那么,我不能顶顶本杰明的优秀解释,但如果你想要一个TLDR解释:

docpad是用来(最大的用例)生成STATIC网站,a-github页面或上世纪90年代的旧网站。 你可以写任何你喜欢的页面(Jade,eco,coffeescript等),它会编译页面并输出HTML文件。 把它看作是“永远编译一次服务器”的东西。

另一方面,如果您希望在您的网站上使用dynamic内容,则希望使用Nodejs从其他网站获取dynamic数据,或者即时生成dynamic数据。

至于你对Heroku临时文件系统的担心,(我不知道究竟是如何工作的),你可以使用Amazon的S3进行存储。 看看这个