Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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
Php 强制Codeigniter与清漆一起工作_Php_Codeigniter_Varnish - Fatal编程技术网

Php 强制Codeigniter与清漆一起工作

Php 强制Codeigniter与清漆一起工作,php,codeigniter,varnish,Php,Codeigniter,Varnish,我有一个已经使用codeiginter内置缓存的codeiginter应用程序,我将Varnish应用为一个新的缓存层。但正如我从varnishstat中看到的,这并没有什么区别 Hitrate ratio: 1 1 1 Hitrate avg: 0.0480 0.0480 0.0480 我认为这是因为CodeigiterCookie和HTTP头被发回 这是来自varnish的http请求 Accept-Ranges:bytes Age

我有一个已经使用codeiginter内置缓存的codeiginter应用程序,我将Varnish应用为一个新的缓存层。但正如我从varnishstat中看到的,这并没有什么区别

Hitrate ratio:        1        1        1
Hitrate avg:     0.0480   0.0480   0.0480
我认为这是因为CodeigiterCookie和HTTP头被发回

这是来自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
我注意到不同之处:

  • 不管我怎么努力,代码中心都不会改变
    缓存控制
    年龄
    过期
    ,直到我手动设置它们
  • Codeiginiter发送了一个旧日期1981我在我的 这是正确的
  • CodeIgniter几乎每次请求都会不断更改cookies 在我的应用程序中,我有几个页面需要用户名/密码,但我试图首先集中精力缓存公共页面。之后,我会检查帐户相关页面

    我正在测试以下代码:

    //$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");
    

    如果您的后端正在发送
    缓存控制:max age=XXX
    ,您可以忘记Expires头,因为它将在符合HTTP 1.1的客户端和proxys[1]中被忽略(事实上,通常将其设置为过去,以避免旧的HTTP 1.0客户端缓存项)

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

    最后,由于
    Set Cookie
    头,Varnish不会缓存这样的请求。Varnish需要延迟会话初始化(参见[3])来缓存东西(或一个相当复杂的VCL)

    如果你修复了cookie的问题,但仍然有问题,那么VCL文件和清漆版本将非常受欢迎

    [1]

    [2]


    [3]

    你的饼干问题是我目前正在努力解决的问题。我从您的示例中猜测,您已将cookie\u name变量更改为ci,而不是ci\u会话

    对于simple的某些值来说,最简单的事情可能是放弃CI的会话处理,转而使用基于db的cookie,而不是基于cookie的cookie。如果有一个设置cookie,并且在初始化/自动加载会话时总是有,它将不会被缓存。如果数据全部存储在服务器端,则不会出现此问题


    就我个人而言,我不想为会话的使用引入数据库,所以我将尝试设置缓存控制标头以忽略cookies,并在我知道的视图顶部使用标头_remove()将永远不会是特定于用户的(如我们的RSS提要)。

    我想此时您已经发现基于db的会话和“基于cookie的会话”既依赖cookie,又设置cookie头:-)