кэширование данных json для сеток extjs - PullRequest
0 голосов
/ 26 декабря 2011

Я использую codeigniter (MVC) и extjs для приложения. Приложение содержит множество сеток extjs с пользовательскими данными. Я хочу кэшировать ответ сервера json до определенного времени.

У меня появилась идея реализовать это следующим образом

if(cache file exists and not expired)
{
  $data = read_file(cache file path);// the cache file contains json encoded data with .json extention
}
else
 {
   $result = call to a model function; // returns data from a mysql query
   $data = json_encode( $result );
   //creating cache file with retrived data
   wite_file(cache file path, $data)
 }
echo $data; // $data is in json format

Я хочу реализовать кэширование таким образом. Это правильный путь? В общем, я хочу реализовать пользовательскую библиотеку кэширования json для кэширования данных сервера json для сеток extjs

Существуют ли библиотеки кэширования json, которые уже доступны для codeigniter. Пожалуйста, помогите с вашими предложениями

Ответы [ 2 ]

0 голосов
/ 26 декабря 2011

В Codeigniter встроено практически то, что вы описываете. Они называют его драйвером кэширования: http://codeigniter.com/user_guide/libraries/caching.html

В вашем случае вы захотите запустить его следующим образом:

$this->load->driver('cache', array('adapter' => 'file', 'backup' => 'file'));

if ( ! $foo = $this->cache->get('foo'))
{
     echo 'Saving to the cache!<br />';
     $foo = 'foobarbaz!';

     // Save into the cache for 5 minutes
     $this->cache->save('foo', $foo, 300);
}

echo json_encode($foo); 

Запишет данные кеша в файл.

Недостатком в вашем случае является то, что CI сериализует данные в файле кэша, а не использует JSON.Я полагаю, вы могли бы переопределить драйвер, используя json_encode () вместо serialize ().Приведенный выше метод потребует немного ресурсов, поскольку он будет сериализировать И использовать кодировку json на выходе.

0 голосов
/ 26 декабря 2011

Да, это хороший способ узнать, истек ли срок действия файла или нет, вы можете использовать метку времени создания в файловой системе.

Функция stat должна предоставить вам достаточно информации о файле для истечения срока их действия при необходимости.

У Codeigniter, похоже, есть некоторый механизм кэширования к сожалению, он, кажется, доступен только для веб-страниц, если вы используете представления для визуализации JSON, вы можете использовать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...