Кеш запросов

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
gerzog1995
Сообщения: 29
Зарегистрирован: 2018.07.29, 21:07

Кеш запросов

Сообщение gerzog1995 »

В настройках фреймворка стоит свой стандартный кеш и на сервере кеш запросов. Почему когда я захожу на страницу, то она грузит 2-3с, потом обновляю страницу и вижу что страница уже грузит за 0.3с, с чем это связанно? Через 2-5 минут опять при первом заходе на страницу сайт грузит долго, так положено или это не правильно настроен кеш mysql/запросов и т.д., может время жизни кеша маленькое? Индексы проставлены, кеш файлов тоже, я думал кеш обновляться будет хотя бы раз в час, подскажите пожалуйста
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Кеш запросов

Сообщение andku83 »

Код: Выделить всё

        'db' => [
            'class' => yii\db\Connection::class,
            'dsn' => env('DB_DSN'),
            'username' => env('DB_USERNAME'),
            'password' => env('DB_PASSWORD'),
            'tablePrefix' => env('DB_TABLE_PREFIX'),
            'charset' => env('DB_CHARSET', 'utf8'),
            'enableSchemaCache' => YII_ENV_PROD,
            'schemaCacheDuration' => 3600 // значение по-умолчанию
        ],
Либо тут другое стоит, либо что-то собственное кешируется на меньшее время,
посмотрите какие отличия в логах до и после кеширования.
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Кеш запросов

Сообщение nizsheanez »

"я думал кеш обновляться будет хотя бы раз в час" - в PHP само ничего не делается, если никто PHP не вызывает (а вы не сказали есть ли постоянные пользователи на сайте или это вы один открываете сайт раз в 5 минут), то кеш обновлять будет некому. Сам по себе PHP не запустится и не начнет обновлять кеш, только есть какой-то пользователь или cron его запустит.
Можете посмотреть время жизни разных кешей и сделать их разными (и даже какой-то рандомизации добавить), тогда кеши не будут протухать одновременно, разные запросы к сайту будут обновлять разные кеши, но на каждый запрос к PHP база будет вызываться малое количество раз.

Если пользователей на сайте мало, то можете либо увеличить время жизни кеша, либо по cron вызывать сайт чтобы "прогревать кеш"

"стоит свой стандартный кеш" - стандартный кеш чего? В Yii есть кеш схемы базы, есть кеш виджетов, есть кеш запросов, есть кеш всей страницы.

Что еще может быть: может работать на сервере какой-то скрипт кушающий всю RAM и база из-за этого может быть выгружена операционной системой из памяти. При первом обращении, база возвращается обратно в память (если диски не SSD то вполне это может быть медленно) и потом уже быстро работает.
Такой сценарий можно просто проверить - отрубите все кеши в приложении, если тормозить станет на каждом запросе (а не раз в 5 минут), значит дело в кешах приложения, а не в базе и не в Операционной Системе.
Ответить