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