0

基本的に、2つの異なるページレイアウトヘッダーをA/Bテストします。いくつかの構造上の違いがあります(CSSを切り替えるだけではありません)。

私はこれだけの作業を行うことができました。ZendFramework(サーバー側のPHP)は、特定のブール変数を探して、レイアウトとして使用するHTMLファイル(元のファイルまたはバリエーション)を決定します。このバイナリスイッチは美しく機能します。それぞれの異なるレイアウトはうまくロードすることができます。

GWO utmx( "combination")関数から0または1を取得できませんでした。

ページの読み込み中に、その機能の結果が利用可能になるのはいつですか?私にとっては、いつ呼び出すかに関係なく、常に0を返すように見えます。または、__ utmx Cookieはいつ設定されますか?それが設定された後、私は単にページを更新することができました。utmx()関数のコールバックはありますか?

私は複数の戦略を試しましたが、私の最新の計画はこれでした:

PHPコードでは、__ utmx cookieをチェックして、割り当てられたバリエーション番号を取得します。それをカスタムCookieに保存します。その数に基づいて、レンダリングするレイアウトを決定します。次に、JavaScriptで、ページの読み込み後、カスタムCookieの存在を確認し、存在しない場合は、ページをすぐに更新します(サーバー側のコードに上記のように__utmx cookieを確認するように求めます)。そうすれば、ユーザーが2回目にアクセスしたときに、カスタムCookieがすでに存在し(バリエーションの値を含む)、使用するレイアウトをサーバー側のコードに伝えることができます。ユーザーの最初の訪問時に、GWOがバリエーションに0または1を割り当てた直後に、JavaScriptを使用してページを更新し、サーバー側のコードが__utmxCookieを読み取れるようにします。

__utmx cookieがいつ/どのように設定されるか(またはutmx( "combination")がいつ機能するか)はわかりません。

GoogleWebオプティマイザーを使用したA/Bテスト。訪問者がAまたはBを取得したことをCookieが教えてくれることは役に立ちませんでした。

サーバー側のコード:

    $cookieNameForThisExperiment = 'gwo_variation_header-and-navbar'; //This is for Google Website Optimizer split testing of the header-and-navbar 
    $variation1 = 'variation1';
    if (!isset($_COOKIE[$cookieNameForThisExperiment]) && isset($_COOKIE["__utmx"])) {
        $utmx = explode(':', $_COOKIE["__utmx"]);

        $variation = $utmx[2]; //Careful: this will not work if there are multiple Google experiments running simultaneously and might not even work for testing more than "original" vs 1 "variation".  http://productforums.google.com/forum/#!category-topic/websiteoptimizer/technical-questions/kilJ7lJU2NY
        $variationName = 'original';
        if ($variation == 1) {
            $variationName = $variation1;
        }
        Extrabux_Cookie::setCookie($cookieNameForThisExperiment, $variationName, time() + (60 * 60 * 24 * 30));
    }

    if (isset($_COOKIE[$cookieNameForThisExperiment]) && $_COOKIE[$cookieNameForThisExperiment] == $variation1) {
        $this->_helper->layout()->setLayout('main_new'); //Use new layout only in this variation.
    } //Otherwise, continue using the original layout.
4

1 に答える 1

2

utmxCookieが設定される方法は次のとおりです。まず、ページがサーバーから読み込まれます。ページには制御スクリプトが含まれています。制御スクリプトは同期的に実行され、document.writesはGoogleがホストするsiteopt.jsリソースへの参照を書き込みます。siteopt.jsがロードされ、解析され、実行されると、utmxcookieが設定されます。したがって、制御スクリプトの後にあるページ内のコードには、utmxCookieが表示されます。ただし、a / bスタイルのテストでは、utmx関数を呼び出す標準の制御スクリプトの直後に続く追加のスクリプトがあり、リダイレクトが発生する可能性があります。これは、utmx cookieに問い合わせて、独自のcookieを設定することを目的とした元のページのコードは、その訪問者に別のページが選択されたときに実行されないことを意味します。

あなたがきちんとやろうとしていることを私が理解しているなら、あなたがしなければならないことはここにあります。サーバー上で、(もちろんドメイン内の)Cookieの存在とその値を確認する必要があります。0または1のいずれかで、提供するページのバージョンを示します。Cookieが設定されている場合は、適切なページを提供しますが、制御スクリプトは提供しません。Cookieが設定されていない場合にのみ、制御スクリプトを提供します。したがって、訪問者が最初にあなたのページを見るとき、彼らはコントロールスクリプトで元のページを取得します。ここで、制御スクリプトの最後の部分がこの制御スクリプトの一部ではないことを確認する必要があります。utmx( "URL"、....のようになります。これがコントロールスクリプトに存在しないことを確認する必要があります。存在しない場合、ページは不要なときにリダイレクトされます。

したがって、訪問者が初めてそこにいて、変更された制御スクリプトを提供する場合。制御スクリプトの後に、カスタムCookieを設定するインラインスクリプトがあります。正しいドメインとパスに設定されている限り、サーバーはutmx Cookieを取得する必要があるため、実際には独自のCookieを設定する必要はないことに注意してください。0/1のutmxcookieの値を調べることができます。いずれにせよ、この訪問者のために選択されたページにutmx( "combination")を使用して問い合わせ、Cookieを設定した後、サーバーにリダイレクトする必要があります。utmx関数はsiteopt.jsファイルの一部として提供され、制御スクリプトの後にのみ存在することに注意してください。

この手法はかなりうまくいくはずです。唯一の欠点は、元のページを表示するように選択された訪問者にとって、最初にリダイレクトが発生することですが、標準のa/b構成ではこのリダイレクトは必要ありません。ただし、別の意味では、これは良いことです。訪問者にどのバージョンが与えられても、すべての訪問者がリダイレクトを経験するからです。これにより、オリジナルを見るユーザーにとって時間の利点がなくなりました。この手法のもう1つの利点は、aページとbページの両方のURLが同じであり、後続のページの読み込みにリダイレクトがないことです。

于 2012-06-26T16:33:04.583 に答える