2015-04-19 2 views
2

У меня есть приложение, в котором я использую ajax для обновления комментариев & Как счет.Codeigniter HTML-кэширование с динамическим контентом

Я использую кэширование страницы CodeIgniter http://www.codeigniter.com/user_guide/general/caching.html

и установить следующий код, чтобы обновить кэширование каждые 60 минут

$this->output->cache(60); 

Проблема заключается в том, когда кто-то ввести новый комментарий, операция DB происходит (Из-за Ajax вызова), Но недавно добавленный комментарий исчезает после обновления страницы из-за кэшированной HTML-страницы. Как обрабатывать кэширование, а также динамический контент для изменения?

ответ

0

Я нашел решение.

Для удаления файла кэша необходимо использовать следующую функцию

$this->output->delete_cache('CONTROLLER/FUNCTION'); 

Примечание: Нет Slash до или после.

В моем случае я использовал пользовательские маршруты в codeigniter. Когда пользователь вводит пример example.com, он перенаправляется на example.com/CONTROLLER/FUNCTIONNAME и на эту целевую страницу по умолчанию.

Итак, я создал новую функцию. Пожалуйста, refer here

0

Основной целью кэширования является сохранение ресурсов сервера при загрузке страницы (т. Е. Сервер не должен извлекать все динамические данные каждый раз при его загрузке).

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

Если у вас есть настоящие требования для кэширования этой страницы, вы можете рассмотреть возможность удаления кеша, что заставит его перестроить при загрузке следующей страницы всякий раз, когда делается комментарий. Размещение следующую строку кода в контроллере (в функции, которая получила данные AJAX) должны это сделать:

$this->output->delete_cache('foo/bar'); 
+0

Можете ли вы рассказать мне, что это/foo/bar? Я перепутал имя контроллера/функции, не удаляя его. –

+0

@abdulrashid yes Я считал, что это должен быть контроллер/функция, но я лично не проверял его; Я только что получил эту информацию из документов CI, я сейчас создам небольшой пример для тестирования и скоро узнаю. –

+0

Не могли бы вы подтвердить, какую версию CodeIgniter вы используете? –

Смежные вопросы