Загрузка данных просмотра из памяти вместо диска - PullRequest
0 голосов
/ 08 января 2019

Я заметил, что Laravel читает файлы с диска перед каждым рендерингом. Можно ли как-то кэшировать содержимое представления в память и визуализировать представление, не считывая его из файла?

Я не хочу кэшировать визуализированный вид, но загружаю файл вида (.blade) из памяти перед его рендерингом.

Edit:

Судя по ответам, полученным на других форумах, загрузка файлов просмотра из памяти имеет ограниченные преимущества, поскольку файловая система уже имеет механизм кэширования.

Ответ с форума Laracast

Когда вы вызываете представление из вашего приложения, Laravel скомпилирует шаблон лезвия в PHP и кешировать содержимое в хранилище / рамки / представления, так что последующие запросы для того же содержание не нужно перекомпилировать шаблон.

Я не знаю, как в рамках можно настроить представление кеш для использования альтернативы в кеш-памяти, такой как Redis.

Я был бы удивлен, если бы дисковый ввод-вывод вызван чтением представлений с диска может вызвать огромное количество дискового ввода-вывода, но есть такие инструменты, как iostat и pidstat, который вы можете использовать, чтобы определить, является ли это узким местом для вы.

Одним из возможных решений было бы смонтировать папку кеша представления как отдельная точка монтирования tmpfs

mount -t tmpfs -o size = 128M tmpfs / your / path / storage / framework / views Это временно примонтирует папку в памяти (с максимальным размером 128Mb, который вы можете настроить). если вы хотите сделать это постоянным необходимо добавить в / etc / fstab по ссылке выше.

Не стесняйтесь пробовать, но, честно говоря, IMO вы ограничены выгоды.

1 Ответ

0 голосов
/ 08 января 2019

Если вы используете какой-то вид кэширования памяти, вы можете вручную визуализировать представление и кэшировать результат.
Однако я не думаю, что это даст вам большие улучшения скорости.

$view = cache()->remember('view_home.index', 30, function() {
    return view('home.index');
});

return response($view);

Помните, что php должен также читать все классы с диска, поэтому кэширование нескольких файлов из ста не ускорит ваш сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...