gpt4 book ai didi

django - $sent_http_content_language 不起作用

转载 作者:行者123 更新时间:2023-12-04 05:17:08 25 4
gpt4 key购买 nike

我的 Django 站点有 2 种语言,当语言更改时,nginx 会使用旧语言访问缓存,并且语言不会更改(当然,缓存页面不会更改)。为了防止我需要将“$sent_http_content_language”变量添加到我的“proxy_cache_key”但不起作用,即使我尝试过:

    add_header Test $sent_http_content_language;

http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER

My Response Headers

最佳答案

我要刺... $sent_http_HEADER缓存键没有多大意义,因为这是响应的一部分。 nginx 无权访问响应,直到它实际联系上游服务器并执行请求。

请注意,nginx 无法告诉上游服务器“嘿...根据响应 header ,您刚刚发送,我将从缓存中处理其余请求”。

所以......如果你不能从请求中看出响应已经在缓存中,你就不能使用缓存。

解决此问题的一种方法是使用 cookie;您可以将用户的语言首选项添加到 cookie,客户端将在后续请求中返回该首选项。由于该值存在于请求中,您可以在缓存键中使用它(如 $cookie_lang ,如果响应具有 Set-Cookie: lang=tr )。

有一个相关的问题;即使你在服务器上有这种缓存,使用响应的语言头,工作;您仍然不会在客户端看到更新;因为它会在浏览器缓存中。您无法关闭该缓存,也无法控制它,除非使用少量缓存控制 header 。从您发布的内容来看,它们似乎已经以合理的方式进行了设置(5 分钟已过,不同的标题列表 cookie )。这意味着由您来兑现该 promise ,并且仅更改与这些请求 header 一致的响应内容。

幸运的是,添加 cookie 来表达语言确实尊重您正在使用的缓存控制 header 。

关于django - $sent_http_content_language 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14106823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com