具有可变参数顺序的Nginx缓存
发布时间:2020-12-13 21:03:54 所属栏目:Nginx 来源:网络整理
导读:我正在使用基于请求URI的nginx生成缓存密钥,并查询直接检查memcache的参数,然后如果找不到缓存密钥则从PHP-FPM提供页面.我的问题是许多URL都有不同顺序的查询字符串选项,因此每个响应生成两个或多个单独的缓存键. 我的缓存设置类似于: set $cache_key "$uri
我正在使用基于请求URI的nginx生成缓存密钥,并查询直接检查memcache的参数,然后如果找不到缓存密钥则从PHP-FPM提供页面.我的问题是许多URL都有不同顺序的查询字符串选项,因此每个响应生成两个或多个单独的缓存键. 我的缓存设置类似于:
因此,使用不同顺序的查询字符串参数进入这些URL的URL最终会为同一类型生成多个可能的缓存键:
对n的广告恶心!可能性… 最终的结果是memcache通常填充速度比它应该快得多,因为我有一个潜在的n!-1重复的缓存内容副本,因为查询字符串参数的顺序不同.有没有办法在设置缓存键之前按字母顺序排序它们以避免这种情况?还有其他方法可以优雅地解决这个问题吗? 最佳答案
如果您知道哪些参数对缓存密钥生成很重要,那么您可以手动指定它们.根据你的例子,我写了下一个例子:
或者您可以使用嵌入式perl并编写自己的函数来生成缓存密钥,请参阅此处的示例http://wiki.nginx.org/Configuration#Embedded_Perl_examples (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |