[英]Caching html from mysql query
好的,所以我什至不知道如何开始执行此操作,但是基本上,我有一个显示在每个页面上的菜单之一来获取它的文本和来自mysql数据库的链接。
这是代码:
<table class="LeftMenuTable">
<?php
// Generates the left menu from the LeftMenu_items table
$result = MySqlQuery("SELECT * FROM Menu_LeftMenu;");
while ($row = mysqli_fetch_assoc($result))
{
if ((int)$row['header'] == 0)
{
// echos value is on or not
echo "<tr><td class='LeftMenu'><a href='" . $row['url'] . "'>" . $row['text'] . "</a></td></tr>";
}
else if ((int)$row['header'] == 1)
{
// header
echo "<tr><td style='border:0px; height:5px;'></td></tr>"; // adds extra empty tabel
echo "<tr><td class='LeftMenuHeader'><b><strong>" . $row['text'] . "</strong></b></td></tr>";
}
}
?>
</table>
function MySqlQuery($Query)
{
$result = $mysqli->query($Query) or die(ReportMysqlError(mysqli_error($mysqli), $Query));
return $result;
}
我觉得任何可以被html缓存替换的sql查询都在降低网站的速度。
如果有人有任何信息或建议,请多多包涵。
在调用数据库的方法中(以获取菜单项并构建相应的html):
$_SESSION
是否有项目。 $_SESSION
。 在这里可以找到有关如何使用会话的更多信息。
这样,您的菜单查询将在每个会话中仅触发once
。 我怀疑这是否是真正的性能破坏者(如果您的查询或多或少以正常形式出现)。
请注意,使用上述机制在会话到期之前,菜单中的changes
将不会自动获取。
当我需要组织缓存层时,我通常使用memcached (或其他类似的解决方案)。
但您的情况可能是以更简单的方式完成的:使用中间的“生成器”脚本,该脚本将在每次有问题的表更新时触发(因为它是通过某种形式的管理面板更新的,对吗?)并会生成一个静态文件,然后将该文件包含在您的主视图脚本中。
如果您足够敏锐,我建议您使用一种稍微不同的方法。
如果您使用名为“ Smarty”的模板语言制作页面,请在此处了解更多信息。 http://smarty.net,您应该发现smarty将为您管理缓存。
这与您的问题有什么关系?
约翰。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.