
Mark
08.11.2016
20:20:33
дело не в сложности, а в best practice
просто гетлисты и прочие выборки в теле компонента уже в печенках. никакого повторного использования кода)

Dmitry
08.11.2016
20:33:55
Тут главная проблема - инвалидация кэша. С шаблонами компонентов тегированный кэш как бы из коробки. А в моделях надо будет строить сложную структуру удаления кэша. Опять же могут быть коллизии при конкурентных запросах. В компоненте из БД получаются целостные данные и в кэш отправляется их представление. А в модели могут быть 100500 join на таблицы в которых данные уже изменились.

Google

Mark
08.11.2016
20:34:38
да, нам нужна атомарность разумеется и/или выдача старого кеша

Dmitry
08.11.2016
20:35:11
Тут надо кешировать не в моделях, а создавать собственные промежуточные классы сущностей, которые будут брать данные из моделей. Вот тут уже можно будет применить тегированный кэш

Mark
08.11.2016
20:35:22
инвалидация по тегам, да
в битриксе теги в БД сидят, и это не круто на больших оборотах
да, разумеется классы будут под каждую сущность
это либо выборка из ИБ, либо из ХИБ, редко что-то еще

Dmitry
08.11.2016
20:38:14
С другой стороны можно забить на теги и удалять по CacheDir. Только надо для себя выработать оптимальную структуру раскидывания кэшей и их зависимости

Ruslan
08.11.2016
20:40:15
Доброй ночи всем
Есть кто с генерацинй фидов сталкивался?

Dmitry
08.11.2016
20:41:08
Если использовать Entity\Query, то в качестве ключей кеша можно использовать md5 от getQuery
Или от getFilter если состав полей не меняется

Ruslan
08.11.2016
20:47:36
в "$USER->IsAutorized()"
Что делает -> ???

Google

Mark
08.11.2016
20:49:20

Dmitry
08.11.2016
20:51:27

Mark
08.11.2016
20:51:30

Dmitry
08.11.2016
20:53:07
Ну да. Сначала он формируется по фильтру. И собственно по хешу от getQuery мы узнаем, что запрос изменился/не изменился. И собственно вызываем query или отдаем кэш

Mark
08.11.2016
20:54:29
есть под рукой простое решение с тегами в ОП?) их нет в коробке у мемкеша и редиса.

Dmitry
08.11.2016
20:54:56
Сорри, ОП это что?
Оперативная память?

Mark
08.11.2016
20:55:52
да

Ruslan
08.11.2016
21:03:56

Dmitry
08.11.2016
21:04:12
Посмотрел в исходники. Тегированный кеш без вариантов в БД

Ruslan
08.11.2016
21:05:16
Ааа, вот почему я и не въехал, простите, и большое спасибо!

Mark
08.11.2016
21:06:09

Dmitry
08.11.2016
21:06:10

Mark
08.11.2016
21:06:42
теперь понял - полюбому через бд, ок
да, можно и битрикс взять за основу
только сделать селект по мемкешу и редису не тоже, что по мускулу
но может и прокатит, у нас вроде всегда будут точные ключи в руках

Dmitry
08.11.2016
21:08:16

Google

Mark
08.11.2016
21:09:08
так, стоп - это ничего не меняет. в мемкеше редисе можно удалить только по ключу, там нет тегов
есть патч к мемкешу, но не хочется пачкать руки, так сказать

Dmitry
08.11.2016
21:10:09
PHPCache

Mark
08.11.2016
21:12:19
стандартная это на файлах и с тегами в БД?)

Dmitry
08.11.2016
21:14:16
Можно вообще где-нить в onBeforeProlog инициализировать весь свой тегированный кэш стандартными методами, сериализовать и положить в кэш (хоть файловый, хоть мем) далее в своих компонентах использовать свою функцию получения тегов не из БД через стандартный битриксовский класс, а из кэша по уникальному CacheDir

Mark
08.11.2016
21:15:02
так, что-то навороченно очень получилось
надо, что-то простое

Dmitry
08.11.2016
21:15:09
Исли время кеша протухло, то опять забрать стандартными методами из БД

Mark
08.11.2016
21:16:06
в общем вроде интересная тема?)
работа с кешем вне компонентов и на больших данных, с тегами и в ОП, через свой класс-модель для сущности

Dmitry
08.11.2016
21:16:51
Самое простое, как уже говорил. Продумать структуру CacheDir'ов и при изменении данных последовательно их чистить.
Неудачный пример был

Dmitry
08.11.2016
21:20:05
$obCache->cleanDir($cache_dir_users);
$obCache->cleanDir($cache_dir_cities);
$obCache->cleanDir($cache_dir_countries);
при изменении, например названия страны
Подумал тут. При кешировании запросов будут глюки с пагинацией. Если много юзеров смотрели страницу 1, а на страницу 3 зашло меньше народу, то у страницы 3 ттл будет позже чем у 1

Mark
08.11.2016
21:36:56
да, страница 3 пересоберется раньше. если кешить, как обычно через компонент - будет по другому?

Dmitry
08.11.2016
21:40:58
В общем задача не сильно сложная. Главное построить зависимости удаления кеша
Задача №2 после кэша. Действия над данными после запроса. Желательно будет всю информацию получить в запросе. Никаких getByID в цикле. Все пути к картинкам, файлам желательно будет получить в том же запросе, а это сложно при отношении один-ко-многим. Ну или комбинировать кеш запросов с кешем предствавлений
Или делать запись в кэше на каждый элемент с полным набором его свойств

Mark
08.11.2016
22:00:48
воот

Google

Mark
08.11.2016
22:04:06
часто меняется один товар, и из-за него сгорает весь кеш еще 100500 товаров. хотя они реально не поменялись. так вот если хранить полную инфу по каждому товару отдельно, то можно делать агрегатную выборку буквально получая только ИД товара, чтобы остальные данные забрать уже из кеша по товару.
Это сильно ускорит ребилд кеша.
а в период формирования кеша по товару
- получения св-в
- цен
- скидок
- торговых предложений
- прочих вложенных сущностей
- и тд
можно сделать несколько оптимизированных, но отдельных запросов, чтобы все-таки было по человечески
Думаю, это неплохое сырье для новой статьи на тему эффективной работы с кешем.
Будет что поразносить, ахах)

Maxim
09.11.2016
08:20:47
Зато Билл Клинтон не станет Первой леди.
Однако доброе утро!

Dmitry
09.11.2016
08:21:33
Американцы в чате?)

Илья
09.11.2016
08:22:38

Maxim
09.11.2016
08:23:18
да блин проснулся. сижу на толчке и читать больше нечего. кругом истерия. кругом пздц творицца. путина так громко не избирали, как эти истерички.

Admin
ERROR: S client not available

Maxim
09.11.2016
08:23:46
даже мать его нефть и доу джонс упали в обмором.

Алексей
09.11.2016
08:24:08
А бан есть тут?

Maxim
09.11.2016
08:24:09
дятлы блин
меня?

Sergey
09.11.2016
08:24:19
запахло жареным пуканом

Алексей
09.11.2016
08:24:23
вообще

Maxim
09.11.2016
08:24:33
есть такое. подгорает
вообще
нет, вроде. к илье можно обратиться чтобы выгнать. а так удобно выключить нотификации.

Sergey
09.11.2016
08:25:20
у нас выборы тише потому что результат заранее известен

Sergey
09.11.2016
08:25:20
Block user

Maxim
09.11.2016
08:25:25
ладно. я помолчу.

Google

Илья
09.11.2016
08:25:37

Алексей
09.11.2016
08:26:12
спс

Evg
09.11.2016
08:27:41
Лёх, откуда такие страсти?)

Dmitry
09.11.2016
08:29:17
Лёха проснулся в плохом настроении, спросил в первый попавшийся чатик про бан, узнал что бан есть и ушёл материться в другой чат.

Алексей
09.11.2016
08:29:52
)))
Настроение хорошее, просто подгорает...

Илья
09.11.2016
10:25:25
Друзья есть кто работает с нерезидентами РФ по безналичному расчету?

Sergey
09.11.2016
10:25:44
да
стоп. в качестве кого?

Илья
09.11.2016
10:26:13
в качестве исполнителя

Sergey
09.11.2016
10:26:19
да

Илья
09.11.2016
10:26:29
как оформляешь отношения?
можешь поделиться рыбой договора и счета с актом?

Sergey
09.11.2016
10:26:45
точно так же, как и с резидентами

Илья
09.11.2016
10:27:02
за услуги по разработке интересует в первую очередь

Sergey
09.11.2016
10:27:43
договор обычный по законам РФ с оплатой в рублях. счета и акты по стандартным правилам той страны, с кем работаю