【问题标题】:Storing html template components in a database将 html 模板组件存储在数据库中
【发布时间】:2012-02-19 18:33:19
【问题描述】:

我正在寻找一个直截了当的问题的解决方案:

有些模板分为两种类型: 1。图片 2.文字

我将这些部分称为模板的组件,其值由用户输入。图像组件可以有一个链接,与之相关的替代文本。文本组件可以有纯文本或一些 html 行。这些组件的值用于渲染模板的最终输出。

每个模板可以有大约 5-10 个组件,这对于其他模板可能不常见,例如:

pageTitle
tagline
firstParagraph
buttonText
headerImage     -   Image Component
firstImage      -   Image Component

所以简单的计算说:

  • 1 页 = 1 个模板
  • 1 个用户可以拥有 > 1 个页面
  • 每个模板可以有 5-10 个组件

所以如果我像这样存储它:

COMPONENT   TYPE        VALUE         LINK

pageTitle   text        Hello world
tagline     text        tagline here
headerImage image       image.jpg     http://example.com

它可以是任意数量的用户,所以假设 10000 个页面在一个 db 中有 > 10000*10 个组件!!

我们如何才能减少条目数量并获得最佳性能? 更好的架构?序列化?杰森?基于文件的系统?或者别的什么... 可以做什么?

提前致谢!

【问题讨论】:

    标签: php mysql html database templates


    【解决方案1】:

    10 万条记录并不是一个很大的数字,大多数数据库都可以处理这个数字

    如果会有这么多用户(页面),你提到的任何解决方案都会耗费大量资源

    【讨论】:

    • 是的,实际上存储不是问题,阅读才是问题。阅读可能非常频繁,每次有人打开一个页面时,都会获取所有组件。并且用户也可以经常更新现有值,因此不能缓存很长时间。我正在使用 php mysql。
    【解决方案2】:

    在构建这样的东西时要记住一些事情:

    • 内存表非常适合快速读取,所以如果您有很多内存 我会考虑有两个表一个innodb,这样如果你的服务器 崩溃你将能够重建你的内存表,它是 伟大的事业,你可以重新扮演角色。
    • 还要确保使用索引。您需要确保
      where 语句中的所有内容都在索引中,然后尝试 尽可能让所有索引都是数字。也许有 将在表中重复很多的文本在另一个中 表,因此您可以在需要的表中使用一个数字。
    • 对我有帮助的另一件事是更可能是相同的页面 会更频繁地被击中,所以一种缓存类型会缓存 在一定时间内构建的页面应该会有所帮助 表现也很好。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多