-1

我正在创建一个离线 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……我需要服务器端 PHP 来为我做这一切……问题是 PHP 文件如果被缓存,它不会被计算……所以这是我的问题,有没有办法让服务器预先计算站点然后存储它?

PS对不起我的英语

4

1 回答 1

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 代码存储到用于缓存“已执行代码”的同一变量中,然后继续(再次打开缓存并继续)。

于 2013-08-07T19:34:27.340 回答