Php 优化ajax视图计数sql命令以提高速度
我有一个Wordpress驱动的站点,在上面我使用了wp超级缓存,因此我不得不通过ajax跟踪视图,而不是内联PHP。下面是通过ajax调用的PHP文件的核心。顺便说一句,代码并不是Wordpress特有的,但为了稍微解释一下,它会像Php 优化ajax视图计数sql命令以提高速度,php,sql,ajax,performance,mysqli,Php,Sql,Ajax,Performance,Mysqli,我有一个Wordpress驱动的站点,在上面我使用了wp超级缓存,因此我不得不通过ajax跟踪视图,而不是内联PHP。下面是通过ajax调用的PHP文件的核心。顺便说一句,代码并不是Wordpress特有的,但为了稍微解释一下,它会像update\u post\u meta()一样更新wp\u postETA表。它使用mysqli,并进行2sql查询来 确保要更新的postid有效 增加视图计数 我的问题是,这段代码是否存在一些性能问题,它是否会变得更好 代码摘录: 新代码: 这就是我最后使用的
update\u post\u meta()
一样更新wp\u postETA
表。它使用mysqli,并进行2sql查询来
更新wp_postmeta SET meta_value=meta_value+1,其中post_id='“$post_id.”和meta_key='views'代码>
注意!这使得返回响应过时,因为我没有得到返回的当前视图计数。但另一方面,我保存了一个查询。您不能使用插入。。。在重复键
结构上而不是检索/更新/存储?现在,您的代码相当活泼,可能会丢失命中率。差不多
INSERT INTO wp_postmeta (meta_value, meta_key, post_id) VALUES (...)
ON DUPLICATE KEY UPDATE meta_value=meta_value+1
这会消除我的活泼。在我看来很好。我要说的唯一一件事是,如果这是一个后台任务,那么获取视图计数响应在生产环境中是没有用的(除非发生了我不知道的事情)
因此,考虑到这些信息,没有理由事先验证postid。您可以删除第一条sql语句和$views计算,只使用update语句(如果它不是有效的id,那么它就不会更新任何内容)。如果在创建帖子时未设置此“视图”元键,请查看INSERT。。。在重复键上
而不是更新
如果您真的想保留json响应,那么我看不出有任何改进。这段代码是您编写的还是缓存插件的一部分?我自己编写这段代码是为了保存Wordpress使用update\u post\u meta()
进行的有价值的sql调用。现在,我保存了17个sql调用,每个页面浏览超过300ms。我执行的第一个sql调用是确保ajax发送的postid指向有效的post。id隐藏在base64字符串中,经过解码,然后设置为$post_id。非常感谢!是的,我想我可以跳过第一个调用,我记得我非常高兴,从19个使用Wordpress内部ajax函数的调用,到只有2个,我保留它只是为了安全。是的,我确实在所有帖子上设置了一个views元键值,在它被改变之前:)Edit#3忘了提到我使用响应来改变页面上的一个views计数器。
INSERT INTO wp_postmeta (meta_value, meta_key, post_id) VALUES (...)
ON DUPLICATE KEY UPDATE meta_value=meta_value+1