2

我有一个从以下代码生成的动态样式表。

如果文件存在,这是将其缓存到文件并加载它的最佳方法。

case 'stylesheet':
    header('Content-type: text/css');   
    header("Cache-Control: must-revalidate"); 
    $offset = 72000 ; 
    $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"; 
    header($ExpStr);

    $stylesheets = array(
        'open_sans'   => file_get_contents('http://fonts.googleapis.com/css?family=Open+Sans:400,600,700')
    );
    exit;

从 echo CSS {$stylesheets['open_sans']} CSS 打印;

4

5 回答 5

2

我觉得我现在很好。

我发现了一个非常简单而强大的类: https ://github.com/gilbitron/PHP-SimpleCache

为了检查我正在做的事情:

if (file_exists(CACHE_PATH . 'stylesheet.cache')) {
    require CACHE_PATH . 'stylesheet.cache'; 
    exit;
于 2012-12-27T05:53:42.893 回答
0

这里有一个简单的缓存实现,可以在像你这样的代码中使用。

于 2012-12-26T19:44:09.777 回答
0

为什么不缓存整个网站而不仅仅是 CSS 文件。看看这个Cache

于 2013-03-06T10:44:19.130 回答
0

试试phpFastCache.com

这是一个例子,很简单。缓存你的 CSS 可以这样做:

require_once("phpfastcache/phpfastcache.php");

$css = __c()->get("csspage.user_id_something");

if($css == null) {
       // handle your css function here
       $css = "your handle function here";
       // write to cache 1 hour
       __c()->set("csspage.user_id_something", $css, 3600);
}

echo $css;

PHP 缓存整个网页:您也可以使用 phpFastCache 轻松缓存整个网页。这是一个简单的示例,但在实际代码中,您应该将其拆分为 2 个文件:cache_start.php 和 cache_end.php。cache_start.php 将存储开始代码直到 ob_start(); cache_end.php 将从 GET HTML WEBPAGE 开始。然后,您的 index.php 将在文件开头包含 cache_start.php,在文件末尾包含 cache_end.php。

<?php
    // use Files Cache for Whole Page / Widget

    // keyword = Webpage_URL
    $keyword_webpage = md5($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']);
    $html = __c("files")->get($keyword_webpage);

    if($html == null) {
        ob_start();
        /*
            ALL OF YOUR CODE GO HERE
            RENDER YOUR PAGE, DB QUERY, WHATEVER
        */

        // GET HTML WEBPAGE
        $html = ob_get_contents();
        // Save to Cache 30 minutes
        __c("files")->set($keyword_webpage,$html, 1800);
    }

    echo $html;
?>

减少数据库调用数据库的 PHP 缓存类:您的网站有 10,000 名在线访问者,并且您的动态页面必须在每次页面加载时向数据库发送 10,000 个相同的查询。使用 phpFastCache,您的页面仅向 DB 发送 1 个查询,并使用缓存为 9,999 名其他访问者提供服务。

<?php
    // In your config file
    include("phpfastcache/phpfastcache.php");
    phpFastCache::setup("storage","auto");

    // phpFastCache support "apc", "memcache", "memcached", "wincache" ,"files", "sqlite" and "xcache"
    // You don't need to change your code when you change your caching system. Or simple keep it auto
    $cache = phpFastCache();

    // In your Class, Functions, PHP Pages
    // try to get from Cache first.
    // product_page = YOUR Identity Keyword
    $products = $cache->product_page;

    if($products == null) {
        $products = YOUR DB QUERIES || GET_PRODUCTS_FUNCTION;


   // set products in to cache in 600 seconds = 10 minutes
        $cache->product_page  = array($products,600);
    }

    foreach($products as $product) {
        // Output Your Contents HERE
    }
?>
于 2013-08-17T18:57:48.600 回答
0

我建议你APC 缓存。它是一个稳定且快速的 PHP 内存缓存。我将它用于我的整个应用程序,但如果需要,您可以使用它来保存变量。您可以将 $stylesheets['open_sans'](使用 apc_store 函数)的内容保存在缓存变量中,然后从 RAM 内存(快速)从那里提供服务(您将使用 apc_fetch),只要您想要设置过期时间。

于 2013-08-17T20:19:09.620 回答