4

オンラインの 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>

URL .../share.php?correct=4 を動的に作成します

しかし、ページを共有すると、次のメッセージが表示されます。

I took the Quiz and answered of 9 questions correctly.

動的データが表示されていないようです。Googleがページをキャッシュしたためだと思いますか?

ありがとう

4

2 に答える 2

3

私の知る限り、プラス 1 ボタンはページをキャッシュします。FBのいいねボタンも同様です。あなたはこれを試してみたいかもしれません

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

それはトリックを行います。お役に立てれば

于 2012-10-26T15:19:14.460 に答える
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 が毎回フェッチャーに対して一意に見えるようにすることです。

それが役立つことを願っています。

于 2012-10-26T16:22:15.833 に答える