我正在创建一个在线 HTML5/Javascript 测验。我正在通过 Facebook 和 Twitter 分享测验的结果。消息是通过 Javascript 创建的,“我刚刚答对了 Y 个问题中的 X 个”
我想对 Google Plus 做同样的事情。但是,“片段”似乎是由页面上的 schema.org、开放图谱或标题/描述标签生成的。此处的文档:https://developers.google.com/+/plugins/snippet/
我以为我可以通过 PHP 中的查询字符串参数动态生成这些标签,但看起来 Google 缓存了该页面。有什么想法吗?
PHP:
<?php
$correct = strval($_GET['correct']);
$title = "I took the Quiz and answered " . $correct . " of 9 questions correctly.";
?>
<!DOCTYPE html>
<html>
<head>
<title><?php echo($title); ?></title>
<meta property="og:title" content="<?php echo($title); ?>" />
</head>
</html>
我动态创建 url .../share.php?correct=4
但是当我分享页面时,我看到消息:
I took the Quiz and answered of 9 questions correctly.
它似乎没有显示动态数据。我假设是因为 Google 缓存了该页面?
谢谢
最佳答案
+1 按钮和共享对话框确实使用缓存。不过,片段 getter 应该遵守缓存控制指令,因此您应该能够通过提供必要的 header 来防止缓存来实现您的目标。
在 PHP 中,以下代码使用必要的数据设置 header 以防止缓存:
<?php
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
您也可以考虑做一些其他事情,就是将随机生成的 ID 插入到查询字符串参数中,这样共享 URL 每次对于抓取器来说都是唯一的。
希望对您有所帮助。
关于php - 自定义 Google + 分享文本(片段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075517/