2014-10-05 1 views
1

Хорошо, в основном у меня есть новая усадьба (0.1.9). У меня возникло множество проблем с настройкой общей папки (поскольку доля папки VirtualBox очень медленная). Итак, моя текущая настройка такова: Homestead (0.1.9) доля nfs (используя winnfs из github).Laravel Blade скомпилированный вид не обновление. Неправильный вывод в браузере

Проблема возникла, когда представление было кэшировано (скомпилировано) и не хотело обновляться. Каждое новое дополнение к файлу будет отображаться, но если оно будет удалено, представление будет нарушено. Я отключил nginx sendfile (таким образом устраняя странные проблемы с кешем при использовании nfs), opcache отключен в файле php.ini (поэтому кэширования там нет), системное время усадьбы похоже на время машинной машины (во избежание некоторой путаницы, когда временная метка файл анализируется, если он даже разобран). Если я перейду к app/storage/views, я вижу, что представления компилируются, но они свободны от ошибок, только если они скомпилированы в первый раз.

Итак, скажем, я начинаю с этого файла: http://laravel.io/bin/xmoQd. Я загружаю его в браузер, и скомпилированная версия добавляется в приложение/хранилище/просмотр. Я добавляю lispum * 15 и снова обновляюсь. Снова скомпилированная версия обновляется, и все в порядке.

Проблема в том, что когда я удаляю предыдущую модификацию и обновляю страницу, я получаю ее в app/storage/view: http://laravel.io/bin/KX7eD. Я отключил nginx sendfile, opcache в php.ini, я использую nfs (winnfs) для совместного использования папки с homestead. Я сделал php aristan cache: clear, сделал Cache :: flush() в php artisan tinker, удалил все из приложения/хранилища/просмотров, снова установил композитор. Кто-нибудь знает, что случилось. Спасибо

Редактировать: Я проверил еще несколько и подтвердил, что это ошибка, вызванная использованием NFS. В основном происходит то, что Laravel обслуживает представления во время процесса компиляции, и я получаю этот странный вывод. Когда я вернусь к использованию действительно медленной папки с папкой VirtualBox, все работает так, как должно, но теперь проблема в том, что время загрузки страницы действительно очень медленное.

+0

Может быть дубликат: http://stackoverflow.com/questions/16971445/how-i-can-disable-templates-caching-in-development-mode/20688419 # 20688419 Обратите внимание, что проблема связана с NFS. Вопрос недостаточно для анализа. – Ifnot

ответ

0

Время от времени я эту проблему, и, хотя это не проблема Laravel, но операционная система одна, я больше взломан службу Laravel Просмотр не кэшировать просмотров:

Создать Клинок Compiler переопределение метода isExpired:

class BladeCompiler extends IlluminateBladeCompiler { 

    public function isExpired($path) 
    { 
     if (Config::get('cache.views') === false) 
     { 
      return true; 
     } 

     return parent::isExpired($path); 
    } 

} 

Создание поставщика услуг для переопределения реализации компилятора:

class Provider extends ServiceProvider { 

    /** 
    * Indicates if loading of the provider is deferred. 
    * 
    * @var bool 
    */ 
    protected $defer = false; 

    /** 
    * Register the service provider. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     $app = $this->app; 

     $app->bindShared('blade.compiler', function($app) 
     { 
      $cache = $app['path.storage'].'/views'; 

      return new \My\BladeCompiler($app['files'], $cache); 
     }); 
    } 

}