我正在创建一个离线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文件如果被缓存则不计算... 所以这是我的问题,有没有办法让服务器预先计算网站然后存储它?
抱歉我的英文
答案 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代码存储到用于缓存“已执行代码”的相同变量中,然后继续(再次打开缓存并继续)