5

私は現在、以下のコード (jQuery が必要) を使用して、Web サイトの知覚パフォーマンスを向上させるためにページのプリフェッチを試しています。

訪問者の 0.5% だけがダイヤルアップを使用しています。クエリ文字列 (古き良き時代)、外部リンク (http)、pdf (大きなファイルはこの形式です) は除外しています。実稼働サイトでは、プリフェッチ時に考慮していない、他に考えられるマイナスのシナリオは何ですか?

<script type="text/javascript">
$(document).ready(function() {
$("a").each(
function(){
    $(this).bind ("mouseover", function() {
        var href=$(this).attr('href');
        if (
            (href.indexOf('?') == -1)&&
            (href.indexOf('http:') ==-1)&&
            ($(this).hasClass('nopreload') == false)&&
            (href.indexOf('.pdf') == -1)
        ) {
            $.ajax({ url:href, cache:true, dataType:"text" });
        }
    });
    $(this).bind ("mousedown", function(btn) {
        if (btn.which==1) {
            var href=$(this).attr('href');
            if ($(this).hasClass('nopreload') == false) {
                window.location.href = href;
                return false;
            }
        }
    });
});
});
</script>

特定のリンクでは、ホバーするとページがプリロードされ、マウスダウンでナビゲートされます (ボタンが離された後)。

4

5 に答える 5

2

正しくコーディングされていないサイト(多数あります)では、リンクをクリックすると効果が生じる場合があります。たとえば、多くのサイトでは、削除ボタンは実際には、クリックするとレコードを削除するリンクです。GETリクエストを送信すると、有害な副作用をもたらす標準のバニラリンクがサイトにゼロであることを絶対に確認する必要があります。

また、ユーザーが同様のリンクを含めることができないようにする必要があります。また、外部の投票サービスへのリンクを画像化することもできます。たとえば、クリック可能なリンクを追加することで、あるフォーラムで簡単に投票を行うことができます。これにより、投票が更新され、REFERERにリダイレクトされます。

害が少ないので、サイトはアクティビティを追跡するために巧妙なトリックを実行して、プリフェッチされた各ページを追跡する場合があります。これは、サイトの統計やログに影響を与える可能性があり、ユーザーのアクティビティの表示が歪む可能性があります。

そうは言っても、私はそのアイデアが好きです!:-)

于 2011-03-14T13:25:04.887 に答える
2

右クリックするとマウスダウンイベントもトリガーされるため、イベントデータを確認することをお勧めします。

20-30kbのhtmlソースの速度ゲインはかなり低いと思います。関数は、画像、css、またはjsファイルをプリロードせず、純粋なhtmlコードのみをプリロードします。

于 2011-03-14T13:25:37.727 に答える
0

ここにマイナス面があります。Chrome はイベント トラッキング ピクセルをページに書き込む際にそれらをプリフェッチしようとしますが、その結果、二重のインプレッションが発生します。

于 2015-07-24T20:53:51.907 に答える
0

私の意見では、あまり意味がありません。とにかくサイト全体で JavaScript と CSS を使用する場合、追加でキャッシュするのは画像だけです。これは、JavaScript を使用してページごとに行うことができます。サーバーに不必要に多くの作業をさせているように思えます。

リンクの上にマウスを置くと、ページが読み込まれてキャッシュされます。正しいです。しかし、そのページに移動すると、ブラウザーは再びページを要求し、サーバーは引き続きページを作成して送信する必要があるため、キャッシュ プロセスは無意味になります。

于 2011-03-14T15:09:12.060 に答える
0

Have you considered Prefetching as defined in HTML 5? I'm not quite sure how many browsers support it currently, but it's worth checking out IMHO. I thought FF supported it, but I couldn't get it to work, but Chrome does seem to do it.

Normally you can set in the head:

<link rel="prefetch" href="abc.html">

A quick test to do it dynamically "onmouseover" in Chrome also works:

<a onmouseover="var l=document.createElement('link'); l.rel='prefetch'; l.href=this.href; document.getElementsByTagName('head')[0].appendChild(l);" href="abc.html">abc</a>
于 2011-03-14T15:18:53.477 に答える