gpt4 book ai didi

php - 如何缓存 PHP 生成的动态页面并包含开放图形元信息

转载 作者:行者123 更新时间:2023-11-29 14:31:44 24 4
gpt4 key购买 nike

我需要一个在动态页面上缓存 PHP 信息并包含元信息的解决方案。我的问题是我正在使用一个缓存代码,该代码保存代码及下面的页面信息,但不保存元信息。

看我的页面My Dynamic Page

我的软件正在从 ID 5351(我数据库中的歌曲)动态创建此页面,我正在使用 php 来获取歌曲信息。为了使这个过程更加高效,我设置了 PHP 缓存。我现在使用下面的代码缓存它......

<?php

$cachefile = "cache/".$reqfilename.$cache_folder.md5($_SERVER['REQUEST_URI']);


$cachetime = 11000 * 60; // 110000 minutes


// Serve from the cache if it is younger than $cachetime

if (file_exists($cachefile) && (time() - $cachetime
< filemtime($cachefile)))
{

include($cachefile);


echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))."
-->n";


exit;

}

ob_start(); // start the output buffer

?>

PHP 缓存是使用它来完成的,但我的问题是它只缓存此代码及以下代码中的 PHP 信息。这是一个问题的原因是因为我还在 Open Graphic 标签的元信息中使用 PHP。 OG 是为了让人们可以在 Facebook 上“喜欢”我的音乐。这是我的 OG 标签的样子。

<title>Chennai Christian Radio</title>
<meta property="og:title" content="<?php echo $song->title; ?> by <?php echo $song->artist; ?> - Found on Chennai Christian Radio"/>
<meta property="og:type" content="song"/>
<meta property="og:url" content="http://chennaichristianradio.com/PHP/web/songinfo.php?songID=<?php echo $song->ID; ?>"/>
<meta property="og:image" content="<?php echo $song->picture; ?>"/>
<meta property="og:site_name" content="Chennai Christian Radio"/>
<meta property="fb:admins" content="1013572426"/>
<meta property="og:description"
content="Chennai Christian Radio is your last stop for today's best Christian Music. http://chennaichristianradio.com"/>

那么......缓存我的动态页面并包含元信息的解决方案是什么。这无疑是最好的选择,但使用我当前的代码,它仍然会查询我的 MYSql 服务器以获取元信息和歌曲信息。我认为通过为此创建静态页面并告诉我的软件指向这些页面而不是查询数据库,这样会更有效,并且有助于减少返回服务器的 PHP 流量。感谢您提供的任何帮助。

最佳答案

如果你想实现这一点,你应该缓存由 php 脚本创建的最终 html 页面,或者你也可以查看 varnish cache .

如果您想使用 php 执行此操作,那么我要做的就是启动输出缓冲,并在发送到客户端之前将输出缓冲区的内容写入缓存。类似于以下内容(伪代码)

    <?php

$cachefile = "cache/".$reqfilename.$cache_folder.md5($_SERVER['REQUEST_URI']);


$cachetime = 11000 * 60; // 110000 minutes


// Serve from the cache if it is younger than $cachetime

if (file_exists($cachefile) && (time() - $cachetime
< filemtime($cachefile)))
{

include($cachefile);


echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))."
-->n";


exit;

}

// cache miss

ob_start();

// your code logic here

// your views

// at very end

// write the ouput buffer content to cache file
file_put_contents($cachefile, ob_get_contents());
ob_end_flush(); // this will send the response to client
}
?>

我希望上面的伪代码有帮助

关于php - 如何缓存 PHP 生成的动态页面并包含开放图形元信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9883325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com