Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Автообновление поискового кэша #46

Open
aiiddqd opened this issue Nov 20, 2015 · 1 comment
Open

Автообновление поискового кэша #46

aiiddqd opened this issue Nov 20, 2015 · 1 comment

Comments

@aiiddqd
Copy link

aiiddqd commented Nov 20, 2015

сделан поисковый кеш #45

и в момент сохранения записи, кеш нормально записывается.

беда возникает там, где идет изменение зависимой записи.

например Дело, у него в кеш записывается контрагент из поля От или Адресат.
Предположим дело это Договор №123 с ООО "Карамба".
Записали и в кеш сохранилось название ООО "Карамба" и "Договор".
И теперь можно найти дело по фразе "договор карамба".
А завтра кто то зашел и в ООО "Карамба" изменил название на "Карамба ЗАО (Caramba)"

Логично предположить что теперь дело должно находиться по запросу caramba.
Но это не так, птм что обновление кеша происходит только в момент сохранения самой записи, а зависимые записи никак не учитываются.

Надо сделать систему автоматического обновления кешей.
Если запись обновили, то делать обновление зависимых записей.

Суть идеи заключается в том, что если мы смогли прописать механизм кеширования по какому либо запросу. Например https://github.com/systemo-biz/casepress/blob/master/cp-includes/search-ext/post-content-filtered-search-cp.php#L30

То тут же нам надо суметь прописать механизм обновления кеша по обратному запросу.

Пример:

  1. Мы прописали что в кеш дела идет заголовок записи ИД которой хранится в по От. Например это организация с названием "НКО Тико". Там есть условие которое говорит какие записи обновлять и по какому полю находить.
  2. Надо писать обратный механизм. Что если организация или персона обновится, то надо запускать обновления всех записей с такими условиями и ключами метаполей, в которых есть эта запись.

Еще:

  1. Начать надо с тех функций что уже прописаны в механизме
  2. Плюс добавить эту особенность в блог casepress.org
@aiiddqd
Copy link
Author

aiiddqd commented Nov 20, 2015

В идеале некоторые механизмы стоит делать через рекурсию и AJAX интерфейс очереди.

Предположим есть запись, которая состоит в отношениях с другими 100 000 записями.

Если это делать синхронно, то система может зависнуть и умереть в попытке за раз обработать 100 000 записей.

Потому стоит создавать механизм запуска очереди через метаполя.
Затем запуск функции и рекурсивное выполнение с сохранением прогресса в отдельное метаполе.

  • Hearbeat API отражение прогресса на странице записи. В виде всплывающих оконо или волчка или как то еще. Чтобы пользователь понимал что запись сохранена, но запущено обновление кеша, и его заверешение.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant