web-dev-qa-db-ja.com

Firefoxに特定の期間URLをキャッシュさせる

私が働いている会社の1つは、低速のDSL回線でホストされているWebアプリを持っています。サーバーまたは使用しているソフトウェアのバージョンの構成に問題があります。これは、すべてのページアクセスがJavaScriptライブラリの膨大なコレクションのダウンロードをトリガーしていることを意味します。 Firebugによると、各ページの実際のコンテンツは比較的迅速に配信されます。

Firefoxに特定のURLの有効期限を長くするように強制する方法はありますか?

何年も前、私はカスタム正規表現ルールを使用してsquidプロキシのインストールでこの種のことを行い、不正なサイトの最小キャッシュ期間を強制していました。私がやろうとしていることは似ているように見えますが、純粋にクライアント側です。

5
davefiddes

特定のキャッシュエントリを操作することは実際には不可能であり、Firefox拡張機能でさえそのレベルのアクセス権を持っていません。ただし、サーバーが返すヘッダーを操作することは可能です。残念ながら、既存の拡張機能はすべて、応答ヘッダーではなく要求ヘッダーの操作に重点を置いています。しかし、その拡張は本当に簡単です。したがって、Squidを再度インストールする前に、そのルートを試してみることをお勧めします。このような拡張機能のコードは次のとおりです。

install.rdf

<?xml version="1.0" encoding="utf-8"?>

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
  <Description about="urn:mozilla:install-manifest">
    <em:id>[email protected]</em:id>
    <em:version>1.0</em:version>
    <em:type>2</em:type>
    <em:bootstrap>true</em:bootstrap>

    <!-- Firefox -->
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>8.0</em:minVersion>
        <em:maxVersion>99.0</em:maxVersion>
      </Description>
    </em:targetApplication>

    <!-- Front End MetaData -->
    <em:name>Caching header manipulation</em:name>
  </Description>
</RDF>

bootstrap.js

Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");

function install(data, reason) {}
function uninstall(data, reason) {}

function startup(data, reason)
{
  Services.obs.addObserver(Observer, "http-on-examine-response", true)
};

function shutdown(data, reason)
{
  Services.obs.removeObserver(Observer, "http-on-examine-response")
};

var Observer =
{
  observe: function(subject, topic, data)
  {
    if (subject instanceof Components.interfaces.nsIHttpChannel &&
        subject.URI.Host == "cdn.sstatic.net")
    {
      subject.setResponseHeader("Cache-Control", "max-age=2592000", false);
    }
  },

  QueryInterface: XPCOMUtils.generateQI([
    Components.interfaces.nsIObserver,
    Components.interfaces.nsISupportsWeakReference
  ])
};

これらの2つのファイルをZipアーカイブに入れ、名前をheadermanip.xpiに変更します-完了しました。cdn.sstatic.net(このサイトで使用)からのキャッシュヘッダーを30日後に期限切れになるように変更する拡張子があります通常の7日ではなく。別のホストで発生させたい場合は、subject.URIチェックインbootstrap.jsを変更してください。ホストのみではなく完全なURLを確認する場合は、subject.URI.specを確認することもできます。

3
Wladimir Palant

BetterCache アドオンは有望に見えますが、そのホワイトリストとブラックリストは、URLではなくMIMEタイプでのみ機能するようで、レビューによるとtext/javascript一部のキャプチャが正しく機能するには、ブラックリストに登録する必要があります。


これを行うための組み込みの方法はないと思います。

.。
.。

そして、これは誰かが私が間違っていることを証明するところです。


いつでもsquidをローカルに(同じコンピューターに)インストールできます。これは技術的にはクライアント側です...

0
Bob