6

Jekyll がどのように機能するかについての私の理解は、ローカルでブログを書くと、Jekyll がページを生成し、それをある種のインデックス システムに追加して、ユーザーがメイン ページをロードしたときにすべての投稿のリストを表示できるようにすることです。そうですか?ただし、ブラウザのキャッシュをどのように処理しますか。新しい投稿を追加したら、ブラウザーがキャッシュされたインデックスを使用するのを防ぎ、毎回新しいインデックスをフェッチするようにするにはどうすればよいでしょうか。それとも、まったくナンセンスなことを言っているのでしょうか?

4

1 に答える 1

7

Jekyll には「索引付けシステム」はありません。ページと関連するリソース (CSS、JS、画像など) を生成するだけです。

キャッシングは、HTTP サーバーの構成に大きく依存します。サーバーが任意のリソースを使用して送信する HTTP ヘッダーは、ブラウザにリソースをしばらくの間キャッシュに保持するか、まったく保持しないように指示できます。

たとえば、Apache HTTPサーバーにこれらの設定があります。

<IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 year" # Pages ExpiresByType text/html "access plus 15 minutes" # RSS feed ExpiresByType text/xml "access plus 120 minutes" </IfModule>

これにより、デフォルトで 1 年間リソースをキャッシュに保持するようブラウザに指示されますが、HTML ページは 15 分間のみ、RSS フィードは 2 時間保持されます。そのため、ブラウザーのキャッシュでスペースを解放する必要がない限り、画像、CSS、および JS は 1 年間キャッシュされます。

もちろん、遅延は書き込み頻度によって異なります。現在、多くの古いコンテンツを移行しているため、15 分の遅延がありますが、通常は週に 1 回公開するため、移行が終了したら 1 日または 2 日に設定します。

ExpireHTTP ヘッダーは、ファイルをキャッシュに保持する期間をブラウザーに通知することを理解する必要があります。このような構成を使用すると、ブラウザには新しいコンテンツが表示されなくなります。キャッシングを処理する方法は他にもありますが (ETagたとえば)、ブラウザーがサーバーに何か新しいものがあるかどうかを問い合わせることができますが、Web パフォーマンスの効率は低下します。

したがって、HTML ページのキャッシュExpireを 1 日に設定し、ユーザーがページを更新する直前にページを取得すると、ほぼ 1 日後に新しいページを取得します。

これはまったく気にしませんが、そうでないと思うかもしれません。

HTH

于 2015-08-06T05:50:29.623 に答える