我正在创建一个在线HTML5 / Javascript测验。我通过Facebook和Twitter分享测验结果。消息传递是通过Javascript创建的,“我刚从Y问题中得到X问题”
我想对Google Plus做同样的事情。但是,似乎“片段”是由页面上的schema.org,Open Graph或Title / Description标签生成的。这里的文档: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>
我动态创建了网址... / share.php?correct = 4
但是当我分享页面时,我看到了消息:
I took the Quiz and answered of 9 questions correctly.
它似乎没有显示动态数据。我假设是因为Google已经缓存了这个页面?
由于
答案 0 :(得分:3)
据我所知,加一个按钮可以缓存页面。 fb就像按钮一样。 你可能想试试这个
https://plus.google.com/share?url=http://example.com/share.php?correct=4
它可以解决问题。希望这有帮助
答案 1 :(得分:3)
+1按钮和共享对话框确实使用缓存。片段提取器应该遵守缓存控制指令,因此您应该能够通过提供必要的头来防止缓存来实现您的目标。
在PHP中,以下代码使用必要的数据设置标头以防止缓存:
<?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看起来都是唯一的。
希望有所帮助。