gpt4 book ai didi

php - 强制 Codeigniter 使用 varnish

转载 作者:行者123 更新时间:2023-12-03 17:46:58 25 4
gpt4 key购买 nike

我有一个已经使用 codeiginter 内置缓存的 codeiginter 应用程序,我将 Varnish 用作新的缓存层。但正如我从 varnishstat 中看到的那样,它并没有那么大的不同。

Hitrate ratio:        1        1        1
Hitrate avg: 0.0480 0.0480 0.0480

我认为那是因为 Codeiginter cookie 和 HTTP header 被发回。

这是来自 varnish 的 http 请求。
Accept-Ranges:bytes
Age:0
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:keep-alive
Content-Encoding:gzip
Content-Length:1755
Content-Type:text/html
Date:Mon, 29 Jul 2013 07:25:59 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:Apache/2.2.22 (Ubuntu)
Set-Cookie:ci=%2BEZFRauewyNnl3CXHE0cmz6F3G3moadilt5vXu5gghKXkWm4gg0JObnF2Etq6J5rl3XVigbF0je3funibpvEi4X%2BT3rS2VmazGG3T4Vm1%2B8YcbqRgL4xuMcxybndqJy%2BU9mNmsJjOgmYEZ8oPG8BKOtMaxNiMHmgmbBydxt3SzKfFfFUOydFx%2BeeJ7P1WE7V10m6GyfnFO5DrFYNsE%2F37WNAI%2Bpux%2Fwwch5B4DH1%2F6wssPm%2BNwsLQ1%2FBd44hgUXe3mMzzcqvxNjKqs0gjuwzwPT4nibEHirfaJ7TMVGObMjdrbREnoYS2gwoN15cCeKgXmTJQI2vvTuPcdtZVCjcAX6OvTy491HdIvQIdKRhX2BNi8d7ygo%2F7n5T6%2FN%2B0IohNN9iZ%2Fh959W%2Fz4azEJPfTrluucf6cLnlp2T2zb%2Fb3XroWuPqguk4wMpsAstfLsSfA%2F6yEi4Hph%2BPFxX%2BhyBazs11LJ38FA0flWtYY%2Bk%2B6yoF13sTaENN2pWj0bKDTtres9E4y3xMPr%2FZaO78WRA9CccDzcQfbZ3bZUqoXg4HmX%2BHDHiYPLD6uFpnC28LuDrCSbgXFIlhDrC8j65sxNSKhnzlUP7Konr%2FKRfKNzrgtWHBEzuXArW%2BlgIg1MzaW3GIkRy1gr16ZUjIiv7CCx7Y2twAfKOm4t00MvrTcFoxBPN1lzoasNyRLMIvshU8heWZHy17OPEapuO6N%2BuMl9L8LqU0%2FF%2BUeUDyFVwLG39LGkIVuF93VsIYEp6w2UwtccX4OO4P2uwJEoAJMMqUE%2FztELpCv%2BkfRAiub48n%2BRxK%2FhgUHw1LWsWIPv3xngq3MI8ypWCqkWLjPuu5dc%2FdOd3BSW2MYcBwacoB5CEOPBHGq3hw1QSZfY330hkLuyQPHxkh%2FDTija%2FN2Rz6z47JorsCqHGDBK6%2BPswBWvYZeMd0VMD%2F95j%2BFibi6rBqL3hoE%2BDgcfCdly%2FYH9py%2Fe%2Fa0AUiIINTK8EPtpuKdC8dLhKo2jI5J4e1ifZuWjVd3VnL2CvX; path=/
Vary:Accept-Encoding
Via:1.1 varnish
X-Powered-By:PHP/5.3.10-1ubuntu3.5
X-Varnish:1353481467

我注意到不同的事情:
  • 无论我多么努力地尝试 codeiginter 都不会改变Cache-Control , Age , Expires直到我手动设置它们
  • Codeiginiter 发送了一个旧日期 1981 我加倍检查了我的日期
    服务器是正确的
  • Codeiginiter 几乎在每次请求时都会更改 cookie。

  • 在我的应用程序中,我有几个页面需要用户名/密码,但我试图首先专注于让公共(public)页面被缓存。之后,我将检查帐户相关页面。

    我正在测试这段代码:
    //$this->output->set_header("Cache-Control:public, max-age=9000");
    //$this->output->set_header("Vary: Accept-Encoding,Cookie,User-Agent");
    $this->output->cache(2400);
    $this->load->view("test");

    最佳答案

    如果您的后端发送 Cache-control: max-age=XXX您可以忘记 Expires header ,因为它将在符合 HTTP 1.1 的客户端和代理 [1] 中被忽略(实际上,通常将其设置为过去以避免旧的 HTTP 1.0 客户端缓存项目)。

    设置Vary: User-Agent时要非常小心 header ,因为它会损害您的缓存机会 [2]

    最后,Varnish 不会缓存这样的请求,因为 Set-Cookie标题。 Varnish 需要惰性 session 初始化(参见 [3])来缓存事物(或相当复杂的 VCL)

    如果您修复了 cookie 的问题,但仍然存在问题,那么 VCL 文件和 Varnish 版本将非常有用。

    [1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

    [2] https://www.varnish-cache.org/docs/3.0/tutorial/vary.html

    [3] How should I implement lazy session creation in PHP?

    关于php - 强制 Codeigniter 使用 varnish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918907/

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