【问题标题】:Laravel: Cache and authenticated usersLaravel:缓存和经过身份验证的用户
【发布时间】:2015-06-21 04:28:35
【问题描述】:

我正在使用 barryvdh 提供的很棒的 laravel-httpcache 包来缓存包含大量事件数据的页面。这对客人来说非常有效,而且速度很快。但是,登录的用户可以将此列表中的任何项目标记为收藏。这些项目应该以某种方式突出显示。由于页面被缓存,因此没有突出显示。有没有办法绕过登录用户的httpcache?或者是否可以为每个用户缓存一个页面版本?

【问题讨论】:

    标签: authentication caching laravel laravel-4 http-caching


    【解决方案1】:

    我从未使用过该软件包,但通过查看 documentation,您应该能够在过滤器中添加一个检查:

    Route::filter('cache', function($route, $request, $response, $age=60){
        if(Auth::guest()){
            $response->setTtl($age);
        }
    });
    

    【讨论】:

    • 不幸的是,这不起作用...一旦页面被缓存,缓存的(=非个性化)版本将交付给登录的用户。
    • 嗯,是的,这就是缓存的工作原理。一旦浏览器获得缓存特定请求的命令,除非时间结束或您手动使缓存无效,否则它将不会再次缓存。一个简单的解决方法是在登录时使用不同的 URL。此外,只需添加 GET 参数就足够了。这通常使用 CSS 文件等静态资源来“告诉”浏览器内容已更改 (/css/style.css?v=1.2)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2018-11-26
    • 2020-11-04
    • 2012-07-24
    • 1970-01-01
    • 2019-04-25
    相关资源
    最近更新 更多