如何包含已缓存到HTML的呈现的php文件

时间:2013-08-07 19:09:44

标签: php html caching offline

我正在创建一个离线Web应用程序并正在处理缓存方法...... 因为我使用jquery,它一直在更新,并且想要使用cookie:

<link rel="apple-touch-icon" href="themes/images/apple-touch-icon.png"/>
<link rel="apple-touch-startup-image" href="themes/images/tstartup.png" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-status-bar-style" content="black" />
<meta name="apple-mobile-web-app-capable" content="yes" />

这样他们只会发送到iPhone ... 我需要Server Side PHP为我做这一切...... 问题是PHP文件如果被缓存则不计算... 所以这是我的问题,有没有办法让服务器预先计算网站然后存储它?

抱歉我的英文

1 个答案:

答案 0 :(得分:1)

即使在缓存文件中,您仍然可以调用php代码和变量。有一种方法可以“绕过”这个。我不知道你是如何缓存的,但使用PHP就是这样:

    <?php

    /*start caching*/
    ob_start();

    SOME PHP OR HTML CODE HERE

    /*this will store "already executed code" in cache and clears the buffer*/
    $storecodeincache .= ob_get_contents();
    ob_end_clean();

    /*now at this point there is a piece of code we want to execute later, so we
use the same variable, but we store store PHP code we want execute later like this:*/      

    $storecodeincache .= 'SOMEPHPCODE';

    /*we start regular caching again*/
    ob_start();

    SOME PHP OR HTML CODE HERE

    /*we are finished, we want to store the rest*/
    $storecodeincache .= ob_get_contents();
    ob_end_clean();

    /*not neccessary, just when you call the script you see what has been cached*/
    echo $storecodeincache ;

    /*write all cached content into the file*/
    $handle = fopen('safe://pathwhereyousavethecachedcontent', 'w'); 

    fwrite($handle, $storecodeincache ); 

    fclose($handle); 

    ?>

最重要的部分是$storecodeincache .= ob_get_contents();在我们停止缓存时的开始 - 这会将未执行的 PHP代码存储到缓存文件中 - 请注意,此时我们是“不缓存“但我们会将此代码存储到缓存的文件中!因为我们做了

$storecodeincache .= ob_get_contents();
ob_end_clean();

结束了缓存。我们正在做

ob_start();

之后(再次开始缓存)。但在此之间,PHP缓存已关闭。您可以在任何时候关闭PHP缓存,将任何未执行的 PHP代码存储到用于缓存“已执行代码”的相同变量中,然后继续(再次打开缓存并继续)