PHP-Cache脚本不会使用较新的参数进行更新

时间:2016-02-09 07:17:59

标签: php caching

我有一个网站,可以打电话给api。我有5个apis来处理。目前我的PHP脚本进行一对一api调用,这使加载我的网站太慢(几乎超过1分钟)。为了解决这个问题,我必须缓存来自api调用的响应。我试过了

    <?php
function getUrl () {
    if (!isset($_SERVER['REQUEST_URI'])) {
    $url = $_SERVER['REQUEST_URI'];
    } else {
    $url = $_SERVER['SCRIPT_NAME'];
    $url .= (!empty($_SERVER['QUERY_STRING']))? '?' . $_SERVER[ 'QUERY_STRING' ] : '';

    }
    return $url;
}

//getUrl gets the queried page with query string
function cache ($buffer) { //page's content is $buffer
    $url = getUrl();
    $filename = md5($url) . '.cache';
    $data = time() . '¦' . $buffer;
    $filew = fopen("cache/" . $filename, 'w');
    fwrite($filew, $data);
    fclose($filew);
    return $buffer;
}

function display () {
    $url = getUrl();
    $filename = md5($url) . '.cache';
    if (!file_exists("/cache/" . $filename)) {
    return false;
    }
    $filer = fopen("cache/" . $filename, 'r');
    $data = fread($filer, filesize("cache/" . $filename));
    fclose($filer);
    $content = explode('¦', $data, 2);
    if (count($content)!= 2 OR !is_numeric($content['0'])) {
        return false;
    }
    if (time()-(100) > $content['0']) { // 100 is the cache time here!!!
        return false;
    }
        echo $content['1'];
        die();
}

// Display cache (if any)
display();  // if it is displayed, die function will end the program here.

// if no cache, callback cache
ob_start ('cache');
?>

我在堆栈溢出中从"Automatically create cache file with php"获得了这个脚本。实现这个脚本后,我的网站在30秒内加载速度很好,这很好。但是,我的网站有&p=a&q=b等查询参数。这些参数是从上面脚本的缓存版本加载的,这些版本不会根据请求进行更新。上面的脚本缓存旧的缓存并实现该版本。它不会使用我的新参数进行更新,这些参数每次都会根据用户进行更改。用户需要传递日常变化的日期。缓存脚本加载了昨天的日期。我还没有制作缓存,我的静态文件就像js文件,css一样。

有什么建议吗?

0 个答案:

没有答案