Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
通过最新修改时间表进行HTTP缓存_Http_Postgresql_Caching - Fatal编程技术网

通过最新修改时间表进行HTTP缓存

通过最新修改时间表进行HTTP缓存,http,postgresql,caching,Http,Postgresql,Caching,我有一个我希望缓存的页面,该页面显示最近评论的列表和最近帖子的列表(都是从DB获取的) 我计划在myHTTP头中使用Last Modified,通过将Last Modified设置为my DB中最新的updatedat时间戳字段来实现缓存 要获取最新修改的时间,请使用以下查询 SELECT updatedat from comments, articles ORDER BY updateat DESC LIMIT 1 有效率吗 然后,我会将请求的(如果自以来修改过)与DB(updatedat字

我有一个我希望缓存的页面,该页面显示最近评论的列表和最近帖子的列表(都是从DB获取的)

我计划在my
HTTP头中使用
Last Modified
,通过将
Last Modified
设置为my DB中最新的
updatedat
时间戳字段来实现缓存

要获取最新修改的时间,请使用以下查询

SELECT updatedat from comments, articles ORDER BY updateat DESC LIMIT 1
有效率吗


然后,我会将请求的
(如果自
以来修改过)与
DB(updatedat字段)
中的最新时间戳进行比较,以确定是否需要重新加载数据,或者只是将头类型设置为
未修改(304)
在有问题的列上放置一个索引(updatedat),然后使用MAX函数

SELECT MAX(joint.updatedat) FROM (
    SELECT MAX(a.updatedat) updatedat FROM articles a
    UNION
    SELECT MAX(c.updatedat) updatedat FROM comments c
    ) joint;

确保查询的列在两个表中都有索引。

查询生成两个表的笛卡尔乘积作为中间结果;你想问什么?你想知道两个表中的最新日期吗?是的,我想得到最新的日期时间(两个表中最大的一个)。注释表包含文章和页面的注释(每个页面都有一个自定义url,从一篇文章中脱颖而出)。你不能像这样从两个表中获得最大值,您需要分别确定每个结果中的最大值,然后选择两个结果中的较大值。