Дилик Пулатов, более чем уверен. Если вам нужно два независимых модуля API в одном приложении, то у вас явно что-то не так. Модуль от приложения практически ничем не отличается. Подумайте на выходных. Разберитесь. API делается для какого либо сервиса, поэтому нет смысла их делать отдельным модулем.
Евгений Мусонов, с такими темпами вам и кэша будет мало... Начните оптимизировать по порядку:
1. Как сказал Lander - настройте индексы.
2. Выбирайте данные пачками, а не все записи сразу.
3. Используйте для выборки массивы или простые SQL запросы, а не объекты. Объекты Active Record потребляют много памяти.
4. Оптимизируйте запросы.
5. Денормолизация базы данных или отдельная база для чтения (no sql)
6. Кэширование
Кэширование на последнем месте! Это если уже совсем уже всё плохо. С кэшированием есть свои проблемы, о которых вы сейчас не думаете. Вы сейчас загоните всё в кэш. У вас накопиться много кэша. Сайт будет работать. Но если вы почистите кэш , то ваш сайт может просто рухнуть из-за нехватки памяти и большой нагрузки, например. Избегайте кэширование. Особенно на начальном этапе.
У вас много что не правильно. Начните с изучения ООП, разделение на слои. В двух словах не описать. Елисеев Дмитрий. Он вам много что может рассказать в своих видео по Yii2.
В rules вы передаёте разрешение или роль. Если у вас сложная логика, то лучше использовать в rules разрешения. Если логика не сложная можно обойтись без разрешений - только роли.
Например. Если вам нужно скрывать поле телефона всем кроме админа, то вы можете написать так:
if(Yii::$app->user->can(“admin”)) {
//code
}
Однако, если вы вдруг захотите ещё отображать телефон модераторам, то код усложнится. И придётся делать два условия в if. Либо вы вдруг решите, что телефон показывать можно модераторам, а у администратором нужно его скрывать. Такие действия ведут к изменению кода. Однако поступить можно иначе. Вместо роли указываем разрешение:
В таком случае, для того чтобы дать права на просмотр телефона вам нужно только присвоить разрешение profile.view.mobilePhone к роли или конкретному пользователю. Захотели всем админам дали это разрешение, а захотели - только себе.
Таким образом везде в коде вы указываете разрешения. Далее эти разрешения создаёте в Rbac. Затем присваиваете эти разрешения какой-то роли или конкретному пользователю.
Если вы захотите ещё это разрешение на просмотр телефона дать и Васе, то просто добавляете ему это разрешение. Если всем moderator то так же добавляете это разрешение только уже к роли. И все модераторы будут видеть телефоны.
Не знаю. Я уже совсем просто объяснил. С разных сторон. Не понять это - просто совсем... Если совсем туго, то забудьте пока про это. Работайте с ролями. Затем поймёте.
MouseZver, вы говорите не работает так. Я говорю либо код должен быть. Либо ошибка. Понятие не работает не для программирования. Либо говорите какая ошибка выходит, либо код работает.
MouseZver, я и показал как сделать в комментарии выше. Отрендерите эти файлы. Только путь правилам напишите в зависимости от того где лежат эти файлы. Ещё подозреваю, что вам нужно было использовать виджеты.