即使用户未登录,Laravel也会设置cookie.这会强制Varnish将每个请求发送到后端.我使用Session Monster包来遇到一些人(http://abeak.blogspot.co.uk/2014/12/caching-laravel-with-varnish.html),如果用户未经过身份验证,它会设置一个标头.这是一个Laravel 4软件包,所以我创建了一个中间件,如果用户没有被刷新,则会设置标头.X-No-Session
我无法弄清楚如何在没有设置标头的情况下让Varnish将请求发送到后端.我非常感谢任何指导!
编辑:
X-No-Session如果用户未登录,此中间件将设置标头:
<?php
namespace App\Http\Middleware;
use Closure;
use Session;
class StripSessionsIfNotAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(auth()->check()) {
return $next($request);
}
return $next($request)->header('X-No-Session', 'yeah');
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将链接文章中的VCL转换为VCL V4:
#
# This is an example VCL file for Varnish.
#
# It does not do anything by default, delegating control …Run Code Online (Sandbox Code Playgroud) 似乎在调用后两个结果都是一样的.