Змінні запиту і кешування уявлення компонента - joomla! По російськи

Думаю, що всі ви знаєте про те, що уявлення компонента може бути закешовану. Але чи всі розуміють, навіщо при цьому використовувати змінні запиту? Давайте розберемося.







Активувати кешування уявлення в своєму компоненті досить легко. Візьмемо стандартний метод display () вашого контролера:

Отже, виклик JControllerLegacy :: display () з першим параметром в значенні true активує кешування. Але навіщо потрібна друга параметр $ urlparams.

$ Urlparams - це масив змінних запиту і їх типів фільтра, який бере участь в генерації унікального ID кеша. наприклад:

Давайте подивимося, яким же чином цей масив бере участь в генерації унікального ID кеша. Спочатку заглянемо в метод JControllerLegacy :: display () і знайдемо місце виклику кешу:







Ми бачимо, що до виклику кешу $ cache-> get ($ view, 'display');> наш масив реєструється у властивості registeredurlparams додатки, яке є простим об'єктом, властивості якого - це назва змінної запиту, а значення - типу фільтра змінної. Ось як виглядає це об'єкт при кешуванні com_content.

Далі властивість registeredurlparams обробляється в методі makeId () класу JCache.

Ми бачимо, що робиться обхід об'єкта registeredurlparams і генерується новий об'єкт $ safeuriaddon. властивістю якого є назва змінної в запиті, а значенням - значення цієї змінної. При цьому значення фільтрується тим типом фільтру, який ми задали для відповідної змінної. Далі цей об'єкт серіалізуются і передається для генерації md5 хеша.

Ви завжди повинні пам'ятати, що для правильного кешування ви повинні передавати в масив всі змінні запиту, які ви використовуєте у вашому компоненті. При цьому важливим є встановлення коректного типу фільтра для цих змінних.

Це цікаво: