Как хранить код страниц в Laravel?

Есть сайт на Laravel 8 и админка к нему, все самописное.
Встал вопрос дать юзерам генерить странички из админки и тут собственно вопрос:
Где хранить код, который напишет юзер? В БД? В файлах? Если в файлах нужно юзать кеш?
Вообще еще такого не делал и не понимаю как правильно. Фронтом в пике будет пользоваться примерно 500 человек.
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 4
@TheAndrey7
Храните в БД конечно. Это текстовые данные.
Ответ написан
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
Используйте базу данных на первых парах точно.
Возможно, в будущем захочется применить кеширование через статичные файлы или что-то похожее, но сейчас вы ничего сверх невероятного не назвали.

Важно правильно подобрать поля и оптимизировать базу, соблюдая все нормальные формы (если таблиц планируется много, конечно).

Вот например, какие поля есть в MySQL: https://dev.mysql.com/doc/refman/8.0/en/storage-re...
Поля типа LONGTEXT могут съесть до 4 гигабайтов (!!!) чистого текста в одной строке. Но, скорее всего, вам хватит и обычного TEXT с ~65 тысячами символов. Только аккуратнее с поиском по таким полям.
Ответ написан
firedragon
@firedragon Куратор тега Веб-разработка
Senior .NET developer
используйте генератор. Смысл простой.
У вас есть запись в бд и сгенерированный файл.
Алгоритм такой.
1. при редактировании вы забираете данные из бд
2. при сохранении данные кладутся в бд и генерируется статичная страница
3. при обновлении см пп 1
Ответ написан
Комментировать
mcmraak
@mcmraak
php+sql+js+bicycle+crutches
Я бы хранил в файлах, создайте в storage папку для хранения и создайте геттер и сеттер (или акцессор и мутатор, кому как нравиться) для модели. К примеру у вас есть модель App\Models\Page
public function getCodeAttribute(): string
{
    return file_get_contents(storage_path("pages/page_{$this->id}.html"));
}
public function setCodeAttribute(string $html_code): void
{
    file_put_contents(storage_path("pages/page_{$this->id}.html"), $html_code);
}

Не забыть при удалении экземпляра модели удалить и файл, для этого используйте события модели.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы