Я використовую кодигнатор (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 для кодигінітера. Будь ласка, допоможіть зі своїми пропозиціями
Відповіді:
0 для відповіді № 1У 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 для відповіді № 2
Так, це добре звучить, щоб знати, чи закінчився термін дії файлу чи ні, ви можете використовувати часову позначку створення у файловій системі.
The stat
Функція повинна надати вам достатньо інформації про файл, щоб закінчити їх, коли це потрібно.
Здається, що у Codeigniter є деякі механізм кешування на жаль, здається, що він доступний лише для веб-сторінок, якщо ви використовуєте представлення для надання вам JSON, ви можете це використовувати.