【问题标题】:Stop a certain view from caching in Laravel?停止在 Laravel 中缓存某个视图?
【发布时间】:2017-04-11 11:37:07
【问题描述】:

我正在寻找一种方法来阻止一个视图在 Laravel 中进行缓存。我有一个网站,在每个页面加载时都需要一个特殊的键才能通过 ajax 执行某些操作。我的用户正在做的是在他们的浏览器上单击“返回”并显示带有旧特殊键的缓存版本?这意味着他们收到了无效的特殊密钥错误消息,他们不确定这究竟意味着什么。

我怎样才能强制它提供一个新的副本,给他们一个新的特殊密钥?

【问题讨论】:

  • 这很可能是浏览器缓存问题,而不是视图缓存问题。如果您想阻止浏览器缓存该页面,则需要执行添加 Cache-Control: no-cache, max-age=0, must-revalidate, no-store 标头之类的操作。

标签: php laravel caching


【解决方案1】:

在 Laravel 中有多种方法可以做到这一点,但归根结底是按照上面@Joe 的评论实现 Cache-Control 标头。

确保您使用的缓存标头是适当的for your clients' HTTP version

您可以在控制器方法中将标头添加到响应中:

return response($content)
        ->header('Cache-Control', 'no-cache, no-store, must-revalidate')
        ->header('X-Header-One', 'Header Value')
        ->header('X-Header-Two', 'Header Value');

您也可以通过在相关路由上注册自定义middleware 来实现这一点,或者使用诸如laravel-httpcache 之类的包

【讨论】:

    猜你喜欢
    • 2014-04-06
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 2017-01-29
    • 2021-01-04
    • 2017-11-03
    相关资源
    最近更新 更多