【问题标题】:Cache system always generates the same cache for specified view缓存系统总是为指定视图生成相同的缓存
【发布时间】:2016-04-29 14:29:12
【问题描述】:

我对 Laravel 内置的缓存系统有一个非常烦人的问题。

此缓存系统为指定视图生成相同的缓存!即使我在这个视图中做了一些更改,然后我清除了缓存(通过 php artisan 和手动等),它也会为这个视图生成相同的新缓存文件。

让我给你一个示例代码(也许我做的不好,但是……)

控制器:

class UsersController extends Controller {

    public function manage()
    {
        return view('administration::users.manage');
    }

}

查看:

@extends('administration::layouts.master')

@section('content')
<div class="normalheader transition animated fadeIn">
    <div class="hpanel">
        <div class="panel-body">
            <a class="small-header-action" href="">
                <div class="clip-header">
                    <i class="fa fa-arrow-up"></i>
                </div>
            </a>

            <div id="hbreadcrumb" class="pull-right m-t-lg">
                <ol class="hbreadcrumb breadcrumb">
                    {!! Breadcrumbs::render('module.administration.users.manage') !!}
                </ol>
            </div>
            <h2 class="font-light m-b-xs">
                Users
            </h2>
            <small>Loading buttons</small>
        </div>
    </div>
</div>

<div class="content animate-panel">
    <div class="row">
        <div class="col-lg-12">
            <div class="hpanel">
                <div class="panel-heading">
                    Dashboard Home TEST
                </div>
                <div class="panel-body">
                    Content of Dashboard TEST
                </div>
            </div>
        </div>
    </div>
</div>
@stop

缓存文件(始终相同,独立于更改)

<?php $__env->startSection('content'); ?>
<div class="normalheader transition animated fadeIn">
    <div class="hpanel">
        <div class="panel-body">
            <a class="small-header-action" href="">
                <div class="clip-header">
                    <i class="fa fa-arrow-up"></i>
                </div>
            </a>

            <div id="hbreadcrumb" class="pull-right m-t-lg">
                <ol class="hbreadcrumb breadcrumb">
                    <li><a href="index.html">Dashboard</a></li>
                    <li>
                        <span>Interface</span>
                    </li>
                    <li class="active">
                        <span>Loading buttons</span>
                    </li>
                </ol>
            </div>
            <h2 class="font-light m-b-xs">
                Ladda
            </h2>
            <small>Loading buttons</small>
        </div>
    </div>
</div>

<div class="content animate-panel">
    <div class="row">
        <div class="col-lg-12">
            <div class="hpanel">
                <div class="panel-heading">
                    Dashboard Home
                </div>
                <div class="panel-body">
                    Content of Dashboard
                </div>
            </div>
        </div>
    </div>
</div>
<?php $__env->stopSection(); ?>
<?php echo $__env->make('administration::layouts.master', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>

如您所见,我更改了Content of Dashboard -> Content of Dashboard TEST 没有任何更改。

我已经禁用了 opcache 和其他东西,.env 中的缓存设置为一个数组

我还能做些什么来解决这个恼人的问题?

【问题讨论】:

  • 这与 opcache 或 laravel 缓存无关。这是刀片视图引擎。

标签: php laravel caching laravel-5.2


【解决方案1】:

这不起作用可能有多种原因。

blade 的工作方式是检查上次编辑*.blade.php 文件的时间,如果晚于编译文件,则再次编译blade 文件。一个原因可能是您的计算机位于服务器之外的另一个时区,因此 Laravel 认为不应编译这些文件。尝试将服务器的时区设置为与您正在开发的计算机相同的时区。

另一个问题可能是您项目的/storage 文件夹不可写。您的网络服务器必须对此文件夹及其子文件夹具有写入权限。

【讨论】:

  • 我将时区更改为适合我计算机的时区,并且 /storage 也是可写的,但问题仍然存在。
  • 尝试在您的网络服务器上使用php artisan view:clear,这将清除所有已编译的视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
相关资源
最近更新 更多