php - 自定义 Google + 分享文本(片段)

标签 php javascript html google-plus

我正在创建一个在线 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/

相关文章:

html - 媒体查询似乎不起作用

python - 使用 jinja2 时删除 div 之间的空白

php - apiato - 教程示例 : Invalid Input (The email field is required; The password field is required; The name field is required)

javascript - 在 JavaScript 中删除对象

javascript - 角色库登录 JavaScript

javascript - 查找并获取与值匹配的对象数组(ES6)

javascript - 如何传后台:url dynamically using javascript to css?

javascript - 将imacros提取的值返回到javascript中的php

php - 升级到 3.X 后 WooCommerce 自定义代码中断

php - PHP 数组中的自定义排序 - 类似于 mysql ORDER BY FIELD(order_fied, 4, 1, 5, 2, 3)