缓存系统始终为指定的视图生成相同的缓存

时间:2016-04-28 19:32:52

标签: php laravel caching laravel-5.2

我在内置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 - &gt; Content of Dashboard TEST没有任何变化。

我已禁用opcache和其他东西,缓存在.env中设置为数组

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

1 个答案:

答案 0 :(得分:0)

为什么这不起作用可能有几个原因。

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

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