Как кешировать вызов сервера и проверить срок его действия до обращения к новым данным? - PullRequest
0 голосов
/ 17 декабря 2011

Я использую этот скрипт для получения списка веб-шрифтов Google. Как я могу кешировать результаты и использовать это, чтобы определить, загружаться ли из кеша или с сервера?

$googleFontsArray = array();
$googleFontsArrayContents = file_get_contents('http://phat-reaction.com/googlefonts.php?format=php');
$googleFontsArrayContentsArr = unserialize($googleFontsArrayContents);

foreach($googleFontsArrayContentsArr as $font)
{
    $googleFontsArray[$font['font-name']] = $font['font-name'];
}

Ответы [ 2 ]

2 голосов
/ 17 декабря 2011

Вы можете сделать локальную копию сериализованных данных и обновлять файл только каждый час:

$cache_file = 'font_cache';

$update_cache = false;
$source = $cache_file;
if(!file_exists($cache_file) || time() - filemtime($cache_file) >= 3600) // Cache for an hour
{
     $source = 'http://phat-reaction.com/googlefonts.php?format=php';
     $update_cache = true;
}

$googleFontsArray = array();
$googleFontsArrayContents = file_get_contents($source);
$googleFontsArrayContentsArr = unserialize($googleFontsArrayContents);

foreach($googleFontsArrayContentsArr as $font)
{
    $googleFontsArray[$font['font-name']] = $font['font-name'];
}

if($update_cache)
{
    file_put_contents($cache_file, $googleFontsArrayContents);
}
0 голосов
/ 17 декабря 2011

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

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