web-dev-qa-db-ja.com

ServiceWorkerを使ってWordpressの投稿を教える

私は自分のサイトにオフライン機能を実装するためにMozillaによる Offline Content プラグインを使用していて、ほとんど満足していますが、これはオンラインでのプリキャッシュのオプションですPagesを含みます。私の最も重要な内容、私のガイドは投稿にあります。

Mozillaプラグインは放棄されたようなので、私は自分で使うために修正版を作るつもりだと考えました。私はオフラインコンテンツがページを取得してserviceworkerのキャッシュに送り込むコードをここで見つけました:

  private function get_precache_list() {
    $precache_options = $this->options->get('offline_precache');
    $precache_list = array();
    if ($precache_options['pages']) {
        foreach (get_pages() as $page) {
            $precache_list[get_page_link($page)] = $page->post_modified;
        }
    }
    return $precache_list;
}

ガイド付きタグの投稿をキャッシュすることを期待して、以下を追加しました

        $args = array( 'category_name' => 'Guides', 'numberposts'=> 10 );
        foreach (get_posts( $args ) as $page) {
            $precache_list[get_page_link($page)] = $page->post_modified;
        }

サービスワーカーのインストール時にページが読み込まれるようです。私は彼らが200ステータスでネットワークタブで呼ばれているのを見ます。しかし、オフラインにしてロードされた投稿に移動しても、それらは機能しません(通常のオフラインブラウザエラーが表示されます)が、プリロードされたページは機能します。

問題がWordpressのコンテンツやServiceWorkerの入手方法にあるのかどうかは完全にはわかりませんが、作業中のコンテンツと作業中でないコンテンツの唯一の違いは、ページではないという事実にあるようです。これらの投稿を機能させるためにコンテンツを事前キャッシュする必要がある方法はいくつかありますか。

プラグインライブラリに他のServiceWorker実装がほとんどないように思われることに驚きました。私に代わってこれを実行する既存のプラグインがあるのであれば、それをオープンにしているので、記事の投稿方法を変更せずにServiceWorkerでこれらを事前キャッシュできるようにしたいと思います。 Pagesはうまくキャッシュしますが、このコンテンツを単にキャッシュするためのページとして再投稿する理由はありません。

1
Ben Brocka

私が期待していた解決策ではありませんが、Service Workerをよりよく処理し、必要な機能を追加する別のプラグインを見つけました。ただし、プログラムではなく手動で投稿を一覧表示する必要があります。

より良いプラグインは 上倍最適化 です(1つ星のレビューは無視してください。誤った使い方をするとサイトが壊れてしまいます)確かにアマチュアにはお勧めできません)。それはあなたがインストールすることができるオプションのServiceWorkerを持っています。そして、プリキャッシングと一見放棄されたMozillaプラグインより多くのオプションを含みます。私はCSS/Javascriptをよりキャッシュにやさしい方法で延期することにおいて、Autoptimizeよりもそれがより便利で速いと感じています。

私の以前の他のServiceWorker実装の試みがうまくいかなかった理由はまだ完全にはわかりませんが、現時点ではこれは実際に特定の投稿をキャッシュするという私の基準に適しています。

0
Ben Brocka