2

我正在通过 Zend 框架创建网站,我一直在想这个问题已经有一段时间了......

想象一下,您已经创建了最好的文章模块,并且您通常为每篇文章添加 meta_keywords/meta_description 数据库条目,这样当视图呈现时,它会使用在管理后端输入的数据填充相关元字段。

但是,想象一下动态内容较少的情况,到目前为止,您正在使用 HeadMeta() 视图助手向页面添加元关键字/元描述。

我想有一种方法来配置数据库中每页的元关键字/元描述或其他一些元元素。我一直在摸索什么是最好的解决方案,而不会增加过多的开销(因为您需要对网站中发生的每个操作执行查询)

我最初的想法是将元属性保存在数据库中的索引上,这样对于每个操作,您都可以快速检索所有相关数据。我很快意识到通过 GET/POST 传递的参数可能会改变提供的结果,从而使结果集变得无关紧要。

所以也许我们也可以添加参数,但是您可能希望同时忽略一些参数(因为不需要考虑 ?page=12 参数...)。也许使用序列化参数在索引中添加另一个 varchar 列?

或者添加整个 URL 并执行 REGEXP 选择而不是常规选择?(我猜这可能是最慢的解决方案......)

另请注意,mySQL 对 UTF-8 索引的限制约为 varchar(200)(因此无法保存一个巨大的 URL)

有没有人想到解决这个问题的好方法?

4

1 回答 1

1

在我看来,数据结构是正确的:元关键字/描述需要每篇文章。

最终,您需要从数据库中获取文章——无论是单篇文章还是一组“最佳”文章。所以在我看来,关键是通过某种服务器端缓存来保持最高性能。

通常,我使用配置了 db 连接的服务类(参见示例),并且还缓存它检索到的数据。缓存生命周期可以设置得足够短,这样即使缓存的数据也“足够新鲜”。或者,您可以通过 cron 清除/填充缓存,以便前端请求始终获得缓存命中。或者您可以将缓存生命周期设置为永远,并且仅在管理端更新时清除/填充缓存;这种方法的可行性取决于更新的频率。

获得数据后,它会将值塞入 HeadMeta 视图助手中。

于 2010-08-27T06:40:52.127 回答