Php部分缓存
我想缓存一些php文件的一部分。比如说Php部分缓存,php,caching,Php,Caching,我想缓存一些php文件的一部分。比如说 <? echo "<h1>",$anyPerdefinedVarible,"</h1>"; echo "time at linux is: "; // satrt not been catched section echo date(); //end of partial cach echo "<div>goodbye $footerVar</div>"; ?> 所以缓存的页面应该像 (ca
<?
echo "<h1>",$anyPerdefinedVarible,"</h1>";
echo "time at linux is: ";
// satrt not been catched section
echo date();
//end of partial cach
echo "<div>goodbye $footerVar</div>";
?>
所以缓存的页面应该像
(cached.php)
此部分今天已修复
再见,请访问今日推荐网站
这可能是做模板,但我想直接。因为我想要另一种解决方案。看看php的ob_start(),它可以缓冲所有输出并保存这个。
补充:
查看您想要的函数:)
编辑:
这里有一个更简单的版本:)
以下是一些简单但有效的解决方案: template.php
<?php
echo '<p>Now is: <?php echo date("l, j F Y, H:i:s"); ?> and the weather is <strong><?php echo $weather; ?></strong></p>';
echo "<p>Template is: " . date("l, j F Y, H:i:s") . "</p>";
sleep(2); // wait for 2 seconds, as you can tell the difference then :-)
?>
看看php的ob_start(),它可以缓冲所有的输出并保存它。
补充:
查看您想要的函数:)
编辑:
这里有一个更简单的版本:)
以下是一些简单但有效的解决方案: template.php
<?php
echo '<p>Now is: <?php echo date("l, j F Y, H:i:s"); ?> and the weather is <strong><?php echo $weather; ?></strong></p>';
echo "<p>Template is: " . date("l, j F Y, H:i:s") . "</p>";
sleep(2); // wait for 2 seconds, as you can tell the difference then :-)
?>
?生成这些行比从缓存中获取2个键要快。尝试缓存数据库中的数据,不要浪费时间输出,这是模板引擎的工作。此代码仅用于示例。实际代码非常复杂,需要一些sql查询。我试着把我的问题说清楚。我想知道PHP缓存机制。好吧,这不仅仅是关于PHP的,它是很常见的。同样:缓存从数据库中获取的数据,不缓存输出。尝试使用Twig作为模板,这将打开您对将数据与表示分离的理解。@OZ_u这是所有编程语言的常见情况,但我比其他语言更了解PHP语言。我想使用灵活的模板它。我需要一个模板,其中包含在不同日期创建的多个部分。生成这些行将比从缓存中获取2个键更快。尝试缓存数据库中的数据,不要浪费时间输出,这是模板引擎的工作。此代码仅用于示例。实际代码非常复杂,需要一些sql查询。我试着把我的问题说清楚。我想知道PHP缓存机制。好吧,这不仅仅是关于PHP的,它是很常见的。同样:缓存从数据库中获取的数据,不缓存输出。尝试使用Twig作为模板,这将打开您对将数据与表示分离的理解。@OZ_u这是所有编程语言的常见情况,但我比其他语言更了解PHP语言。我想使用灵活的模板它。我需要一个模板,其中包含了在不同日期创建的多个部分。它是有用的,但它不cach页面的所有部分。我想要cach php输出的某些部分,而不是全部。你可以将其传递给函数,include/require,它很灵活。当然,您可以自己将内容传递到缓存文件,然后查看fopen()和fwrite()函数-您仍然需要将内容传递给它们。您可以使用filemtime()检查文件的时间/日期,如果文件过期,只需将其替换。我希望将其用于灵活的模板。我需要一个模板,其中包含在不同日期创建的多个部分。因此,我需要任何忽略缓存中指定php代码部分的函数?你有它所需要的所有信息,如果没有请说。而不是echo“myVar”
您可以创建一个函数echoBuffer,因此使用echoBuffer(“myVar”)代码>用于必须缓冲的内容,并生成返回您需要的函数。(在本例中,is应返回一个(缓冲)字符串“myVar”。您可以同时使用它们;如echo、date、其他函数等。您也可以简单地echo';
到您的新模板文件,也许这就是您想要的?它很有用,但它可以缓存页面的所有部分。我希望缓存php输出的某些部分,而不是全部。您可以将其传递给函数,包括/需要它-这是灵活的。当然e、 您可以自己将内容传递到缓存文件,然后查看fopen()和fwrite()函数-您仍然需要将内容传递给它们检查文件的时间/日期,如果文件过期,只需将其替换。我希望将其用于灵活的模板。我需要包含在不同日期创建的多个部分的模板。因此,我需要从缓存中忽略指定php代码部分的任何函数。因此,创建该函数?您已经获得了该函数所需的所有信息如果没有,请说。您可以创建一个函数echoBuffer,而不是echo“myVar”
,因此对于必须缓冲的内容使用echoBuffer(“myVar”);
,并创建一个返回您需要的函数。(在这种情况下,应该返回一个(缓冲)字符串“myVar”。)。您可以同时使用它们;如echo、date、其他函数等。您也可以简单地echo';
到您的新模板文件,也许这就是您想要的?
<?php
function get_include_contents($filename) {
if (is_file($filename)) {
ob_start();
include $filename;
return ob_get_clean();
}
return false;
}
// Variables
$weather = "fine";
// Evaluate the template (do NOT use user input in the template, look at php manual why)
eval("?>" . get_include_contents("template.php"));
?>
<?php
function get_include_contents($filename) {
if (is_file($filename)) {
ob_start();
include $filename;
return ob_get_clean();
}
return false;
}
file_put_contents("cachedir/cache.php", get_include_contents("template.php"));
?>
<?php
// Variables
$weather = "fine";
include("cachedir/cache.php");
?>