5

Одна из компаний, с которой я работаю, имеет веб-приложение, размещенное на медленной линии DSL. Что-то не так с конфигурацией их сервера или версии программного обеспечения, которое они используют, что означает, что каждый доступ к странице вызывает загрузку огромной коллекции библиотек JavaScript. Согласно Firebug, фактическое содержание каждой страницы доставляется относительно быстро, поэтому.

Есть ли способ заставить Firefox считать, что определенный URL имеет длительный срок действия?

Много лет назад я делал подобные вещи при установке прокси-серверов squid с настраиваемыми правилами регулярных выражений, чтобы установить минимальный срок хранения кеша для сайтов, плохо работающих. То, что я пытаюсь сделать, кажется схожим, но чисто клиентским.

2 ответа2

3

Манипулирование определенной записью в кеше на самом деле невозможно, даже расширения 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>headermanip@superuser.com</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
  ])
};

Поместите эти два файла в ZIP-архив и переименуйте его в headermanip.xpi - готово, у вас есть расширение, которое изменит заголовок кэширования для всего, что приходит с cdn.sstatic.net (используется на этом сайте), чтобы срок его действия истек через 30 дней, а не обычные 7 дней. Если вы хотите, чтобы это произошло на другом хосте - смените subject.URI в bootstrap.js . Вы также можете проверить subject.URI.spec если вы хотите посмотреть полный URL, а не только хост.

0

Аддон BetterCache выглядит многообещающе, но его белый и черный списки, похоже, работают только с типами MIME, а не с URL-адресами, и, согласно обзору, text/javascript должны быть в черном списке, чтобы некоторые капчи работали должным образом.


Я не думаю, что есть встроенный способ сделать это.

...
...

И тут кто-то доказывает, что я не прав.


Вы всегда можете установить Squid локально (на тот же компьютер), это технически на стороне клиента ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .