Noi reprezentăm următoarea situație: o componentă calendar (de exemplu) amplasate în mai multe locații cu diferite modele (iau 2 model). O listă derulantă ar trebui afișată în șablonul de componente care să conțină toți utilizatorii. Utilizatorii folosiți api bitrix în fișierul result_modifier.php al șablonului componentei calendarului. Dar, în viitor utilizatorii nu va fi suficient, astfel încât trebuie să selectați în lista cache cu utilizatorii că de fiecare dată pagina cu componenta din calendar nu este costisitoare de a face interogări de baze de date.
În această punere în aplicare, există o problemă - atunci când modificați lista de utilizatori sau date lista verticală a utilizatorilor existenți, se vor schimba numai după ce cache-ul a fost actualizat, și anume, când expiră termenul său.
Memoria cache a componentelor Bitrix este stocată în folderul / bitrix / cache / s1 / bitrix / components.
Unde s1 este identificatorul site-ului, bitrix (în cel de-al doilea caz) este spațiul de nume. Pentru componentele standard, aceasta este o bitrix, pentru copiat - numele folderului. Urmează numele componentei, în cazul nostru news.calendar, și există dosare cu un nume aleatoriu - există un cache de șabloane. Fiecare folder pentru un șablon separat.
Trebuie să suspendăm eliminarea cache a componentei news.calendar la evenimente
- OnAfterUserAdd - adăugați utilizator
- OnAfterUserUpdate - actualizați datele utilizatorului
- OnUserDelete - ștergeți utilizatorul
Pentru aceasta, adăugați codul în fișierul /bitrix/php_interface/init.php
BXClearCache este o funcție care șterge memoria cache. Primul parametru este dacă să ștergeți complet cache-ul (adevărat sau fals). Al doilea este calea către dosarul cu memoria cache în raport cu / bitrix / cache.