【发布时间】:2017-05-05 07:40:22
【问题描述】:
我正在开发一个应用程序,用户可以在其中创建自己的网页。为此,他们可以从管理面板创建静态 HTML 页面。然后这些页面可以发布在他们的网页上。
页面的字段有:id、title、content、url。
功能是下一个:
- 用户有自己的模板,该模板包含一个名为 base.html 的文件,其中包含标题、正文等。他们在管理面板中创建的所有页面都将显示在该 base.html 文件中。这样他们在后端创建的“页面”只包括页面的内容,而不是页眉、页脚等。
-
此外,该应用程序还允许用户使用其他功能,例如博客,并且用户可以使用一些变量在其页面内显示内容。例如:
{% for post in last_post %}
{{ post.title }}
{{ post.content|slice(0,255) }}
{% endfor %}
现在我将这些页面保存在 MySQL 中,当请求页面时,我通过 url 字段搜索 MySql。流量增加了,我想加快从数据库中读取的速度,我考虑过为此使用 ElasticSearch。
我的问题是,如果这是一个好主意,请继续将此 HTML 页面保存在 MySQL 和 ElasticSearch 中。然后当从用户的网页请求页面时,从 ElasticSearch 中读取。
提前感谢您的帮助
【问题讨论】:
-
一个用户可能有多少页? Elasticsearch 对于搜索和分析事物更有用。您还考虑过哪些其他选择?你试过用 CDN 吗?
-
用户可以拥有任意数量的页面,所有用户的所有页面都保存在同一个表中(所以我在 mysql 中有一个大表)这意味着当我从一个页面中搜索页面时用户,我必须按 url 和 user_id 过滤。除了在管理面板中按 url 搜索外,我还按 id 搜索页面。实际上,我使用 CDN 来提供 CSS 文件、图像等。你能向我解释一下如何从 CDN 提供这些页面吗?我使用 twig 作为我们的模板引擎。谢谢你的帮助!!
-
您是否考虑过使用用户名和 url 创建一个唯一的 id,可能是某种哈希值,并使用该密钥将该内容存储在 cdn 中?为提供静态内容而设置数据库对我来说似乎有点过头了。
-
该应用程序还有其他组件,例如博客,因此我们不会仅使用数据库来创建此页面。此页面仅包含内容,页眉、页脚等内容不包含在内容页面中。当请求页面时,页面的内容会显示在模板的一个部分(模板包括页眉、页脚、...)
-
我看到 2 个使用 CDN 的问题,1º 是我需要通过用户网页中的 url 和管理面板下的 id 搜索页面,在后端用户也可以过滤他们的页面搜索按姓名或日期。所以我需要一个数据库。 2º 如果我使用 CDN,首先我需要搜索 MySQL,然后从 CDN 中获取 get_file_contents,对吗?抱歉,我不能在 unqiue 评论中写下所有内容
标签: elasticsearch