2

プリロードに関する質問をいくつか見てきましたが、そのほとんどは Web サイトを所有していて、ユーザーのためにプリロードを実装したいと考えている人からのものです。私がやりたいことは、自分の使用のためにグリースモンキーを使用して、いくつかのサイトにプリロードを実装することです。

本のような「ページ」を持つ、私が頻繁に訪れるサイトがいくつかあります。また、多くのページ (ほとんどの場合、各ページに 1 MB 以上の画像) があるため、次の 1 ~ 2 ページをロードするグリースモンキー スクリプトを作成したいと考えています。次のページの URL は予測可能です (番号の前にプレフィックスを付けて順番に番号が付けられます)。

これを行うにはどうすればよいですか?Web ページ (すべての画像を含む) をダウンロードして、それがキャッシュされたことを Firefox に知らせる方法はありますか?

4

1 に答える 1

4

非表示の iFrame にページを読み込むことができます。その後、(サーバーと Firefox の設定に基づいて) キャッシュされます。

// ==UserScript==
// @name        _Preload page(s)
// @namespace   _pc
// @include     http://YOUR_SERVER.COM/YOUR_PATH/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant       GM_addStyle
// ==/UserScript==

if (window.top != window.self)  //-- Don't run on frames or iframes.
    return;

var preloadPage = "http://cheezburger.com/6555102208";

/*--- Load page in hidden iFrame.
    It will then be cached per FF and server settings.
*/
$("body").append (
    '<iframe class="GM_hiddenIFrame" src="' + preloadPage + '"></iframe>'
);

GM_addStyle ( (<><![CDATA[
    iframe.GM_hiddenIFrame {
        display:        none;
    }
]]></>).toString () );


ビットが追加されていることに注意してくださいwindow.top != window.self。そうしないと、スクリプトが非表示の iframe で起動し、再帰 (おそらく無限) が発生する可能性があるためです。


これが機能することを確認しました:

  1. Firefox のキャッシュをクリアする
  2. このスクリプトをテスト ページで実行します。
  3. 別のタブでcheezburger.com/6555102208を読み込んでいます...
    Firebug のネットパネルのほぼすべて (画像を含む) のステータスは304 Not Modified-- でした。これは、キャッシュされたことを意味します。

    (フレッシュでキャッシュレスの読み込みは status を返します200 OK。)

于 2012-09-03T10:37:54.600 に答える