小编Chr*_*ris的帖子

当用户未登录时,使Varnish仅缓存页面(Laravel 5)

即使用户未登录,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)

varnish laravel

5
推荐指数
1
解决办法
1245
查看次数

3
推荐指数
1
解决办法
2327
查看次数

标签 统计

hide ×1

jquery ×1

laravel ×1

slidedown ×1

slideup ×1

varnish ×1