Laravel 5 视图缓存

Posted

技术标签:

【中文标题】Laravel 5 视图缓存【英文标题】:Laravel 5 view caching 【发布时间】:2017-01-29 00:10:58 【问题描述】:

如果这已被涵盖,我深表歉意,但我确实进行了广泛的搜索,但找不到答案。

首先,我使用刀片。当我在本地更新视图时,页面会更新并正确显示。但是,当我将文件上传到我的托管服务器时,我看不到更改。我已经等了 24 小时,什么都没有。

起初我以为这是我从服务器缓存的提供程序,但我禁用了该功能。当我从服务器上的 app/storage/framework/views 中删除文件时,新视图将正确显示。所以,这显然是 Laravel 的东西!

本地和生产之间的一切都是一样的(除了 .env 文件),所以我不确定还能尝试什么。

任何建议都将不胜感激,因为我的业务实际上处于暂停状态,直到我弄清楚为止。

【问题讨论】:

您是否尝试过使用 artisan 命令清除缓存?看看这个答案***.com/questions/29152102/… 我没有对我的服务器的 shell 访问权限。有没有办法以编程方式做到这一点?我想我可以在 index.php 中添加一行。 是的,你可以。 laravel.com/docs/5.3/artisan#programatically-executing-commands 【参考方案1】:

如果您没有 shell 访问权限来运行 artisan 命令,您可以创建一个虚拟路由来执行此操作。 (感觉像一个肮脏的解决方案:))

Route::get('/clearViews', function () 
   Artisan::call('view:clear', []);
   //
);

【讨论】:

这很好......但我正在尝试找出为什么会发生这种情况。我不想每次上传更新的视图时都运行这个命令。 (与每次都删除视图文件没有什么不同) 你有访问 php.ini 的权限吗? 我相信我有自己的个人 php.ini,但我无法直接访问它。他们可能会为我更新......你在考虑 opcache 吗? 是的。 ***.com/questions/25813251/… 和 ***.com/questions/20579182/… Laravel 在我所处的环境中变得无法使用。如果我手动清除视图缓存,一切正常,但我不想每次将更改部署到页面时都这样做......另外,当数据库中的某些内容发生更改时,某些动态页面无法正确呈现(除非我再次手动清除视图缓存)。我一直在网上,找不到解决这个问题的方法。转到另一个框架(很遗憾)。

以上是关于Laravel 5 视图缓存的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 – 清除共享主机服务器中的缓存

Laravel 5 – 清除共享主机服务器中的缓存

Laravel 视图显示在一台服务器上的缓存中,但在另一台服务器上工作正常

如何禁用 Laravel 视图缓存?

Laravel 存储视图缓存到 Redis

在 Laravel 4 中缓存视图输出