Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend框架:来自数据库的元属性(关键字/描述)_Php_Mysql_Zend Framework_Meta Tags - Fatal编程技术网

Php Zend框架:来自数据库的元属性(关键字/描述)

Php Zend框架:来自数据库的元属性(关键字/描述),php,mysql,zend-framework,meta-tags,Php,Mysql,Zend Framework,Meta Tags,我正在通过Zend Framework创建网站,对此我已经疑惑了很长一段时间了 假设您已经创建了best articles模块,并且通常为每篇文章添加meta_关键字/meta_描述数据库条目,这样当视图呈现时,它会使用在管理后端中输入的数据填充有问题的meta字段 但是,想象一下这样的情况:动态内容较少,目前为止,您正在使用HeadMeta()视图帮助器向页面添加元关键字/元描述 我想有一种方法来配置数据库中每页的元关键字/元描述或一些其他元元素。我一直在琢磨,在不增加额外开销的情况下,最好的

我正在通过Zend Framework创建网站,对此我已经疑惑了很长一段时间了

假设您已经创建了best articles模块,并且通常为每篇文章添加meta_关键字/meta_描述数据库条目,这样当视图呈现时,它会使用在管理后端中输入的数据填充有问题的meta字段

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

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

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

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

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

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


有人想过解决这个问题的好办法吗

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

最终,您需要从db获得文章—无论是单个文章还是一组“最佳”文章。因此,在我看来,关键是通过某种服务器端缓存保持最大性能

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


获取数据后,它会将值塞入HeadMeta view帮助程序。

是否希望每个url/视图都有唯一的元数据?我认为它应该是唯一的。考虑到元数据实际上表达的是实际的url/视图这一事实。你还有别的想法吗?缓存总是一个可以接受的选择。但是这里真正的问题是如何在数据库中为动态性较差的页面保存数据并高效地检索它们。我一直在考虑扩展FrontController操作,以便在数据库中执行查询,并在以后为每个页面缓存它们……但是,用GET参数保存uri的最佳方法是什么(考虑一些参数,并在其中生活一些参数)