【问题标题】:Customizing Google + Share Text (snippet)自定义 Google + 分享文本(片段)
【发布时间】:2012-10-25 19:08:24
【问题描述】:

我正在创建一个在线 HTML5/Javascript 测验。我正在通过 Facebook 和 Twitter 分享测验的结果。消息是通过 Javascript 创建的,“我刚刚答对了 Y 个问题中的 X 个”

我想对 Google Plus 做同样的事情。但是,“sn-p”似乎是由页面上的 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>

我动态创建 url .../share.php?correct=4

但是当我分享页面时,我看到了消息:

I took the Quiz and answered of 9 questions correctly.

它似乎没有显示动态数据。我假设是因为 Google 已经缓存了该页面?

谢谢

【问题讨论】:

    标签: php javascript html google-plus


    【解决方案1】:

    +1 按钮和共享对话框确实使用缓存。 sn-p 提取器应该尊重缓存控制指令,因此您应该能够通过提供必要的标头来防止缓存来实现您的目标。

    在 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 对提取器而言都是唯一的。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      据我所知,加一按钮会缓存页面。 fb like 按钮也是如此。 你可能想试试这个

      https://plus.google.com/share?url=http://example.com/share.php?correct=4
      

      它成功了。希望这会有所帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多