Кэширование - лучшие практики - PullRequest
0 голосов
/ 19 марта 2012

Я пишу веб-приложение, и у меня возникла серьезная проблема с чрезмерным кэшированием.Я использую CakePHP 2.0, если это вообще имеет значение.

В любом случае, в принципе, проблема в том, что браузер слишком часто кэширует мое приложение.Например, если у меня есть пользователь, который заполняет форму, а затем добавляет флэш-сообщение и перенаправляет пользователя на его панель управления, флэш-сообщение выглядит нормально, но оно отображается до тех пор, пока я не обновлю страницу.Так что, если я отойду от этой страницы и вернусь назад, флэш-сообщение все еще там.Это всего лишь небольшой раздражитель, большие проблемы возникают, когда страницы на самом деле меняются в зависимости от действий пользователя.

Например, на стороне администратора я могу обновить статус пользователей, который каким-то образом изменяет их панель.Проблема в том, что обновленная панель не будет видна без обновления.Что за хлопоты!

Мой вопрос не в том, как это исправить, я знаю, как перестать кешировать все вместе.Похоже, что кэширование является важной частью производительности веб-приложений, и я не хочу останавливать кэширование всего вместе, поскольку вижу, что это замедляет процесс.

Итак, что обычно делается в этих ситуациях?Должен ли я просто остановить страницу от кэширования все вместе?Похоже на экстремальное решение.Или мне просто дать ссылку на все мои страницы с чем-то вроде:

http://mywebsite.com/user?t=<?php echo time(); ?>

Или я что-то упускаю?Любой совет приветствуется!

1 Ответ

2 голосов
/ 23 марта 2012

Ответы, изложенные здесь - Как мне полностью отключить кэширование в Cakephp? - работают?

Устранить проблему с флэш-сообщением сложно - поскольку флэш-сообщение является частью выходного HTML, вы не можете избавиться от него при событии кнопки назад.

Для панели инструментовЯ рекомендую отключить кеширование в браузере ... но это не решит никакого встроенного кеширования, которое имеет CakePHP.

Похоже, что вам нужен какой-то способ аннулировать кеш ТОЛЬКО там, где есть обновление - вы могли быдобавьте метод в ваши методы add () / edit (), чтобы полностью удалить кеш при успешном событии save () - это единственный надежный метод, который будет работать в вашем случае.

...