Javascript и CSS - сжатие и кэширование - PullRequest
1 голос
/ 10 сентября 2010

У меня есть один огромный уменьшенный файл JavaScript (то же самое для CSS). Я ищу некоторую оптимизацию с точки зрения скорости загрузки и кэширования. Я хочу установить заголовки истечения срока действия для обоих этих файлов таким образом, чтобы только с двумя HTTP-вызовами я получал их (и пока я не изменил их номер версии в URL-адресе), чтобы они кэшировались. Мой вопрос -

  1. Где я могу установить заголовки срока действия? Нужно ли устанавливать его как часть ответа на каждый запрос? Или мне нужно установить его в настройках веб-сервера?
  2. Как мне сжать эти файлы (JS и CSS)? Где и как мне это указать? Это нормальное сжатие .zip или .tar.gz? Если это так, будет ли обычный браузер на другом конце разархивировать его и использовать эти скрипты?
  3. Можно ли поместить оба JS + CSS в один файл, свернуть и сжать его? Так что я могу обойтись одним HTTP-запросом? Будет ли это работать? Я полагаю, что нет, поскольку JavaScript выполняется по тегу <script>, а CSS - по тегу <link>. Но все же, можно ли исследовать эту линию мышления? Возможно, можно было бы использовать сам Javascript для динамической вставки CSS в DOM после его загрузки. Но какое влияние это окажет на загрузку страницы. Поскольку браузеры применяют CSS к DOM перед выполнением любого Javascript.

Любая помощь, предложения приветствуются ...

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010

Во-первых, вы уже на правильном пути, используя номер версии в URL.(Я предполагаю, что это не в строке запроса, а в фактическом пути к ресурсу.) V. smart.

Ответы на ваши прямые вопросы:

  1. На вашем веб-сервереконфигурация.

  2. в конфигурации вашего веб-сервера;у вас должна быть возможность включить сжатие gzip, после чего с современными серверами это просто происходит (tm).

  3. Да, но вы, вероятно, не хотите.Вы можете встроить CSS в файл JavaScript в виде набора строковых литералов, а затем вывести элемент style при загрузке страницы ( не через document.write, что убило бы ваш очевидныйпроизводительность загрузки страницы, но с помощью методов DOM).Но это было бы проблемой, если JavaScript отключен на клиенте.:-) Также могут быть задержки при рендеринге, и в любом случае вы, вероятно, не набираете достаточно, чтобы оправдать сложность.

Другие вещи, которые следует учитывать:

  • Если на вашем сайте установлены cookie-файлы, вы не должны обслуживать JS и CSS по пути, по которому cookie-файлы будут отправлены обратно, поскольку наличие cookie-файла в запросе может привести к повреждению некоторых кэшей.Вот почему вы часто видите такого рода ресурсы, загруженные из другого домена или субдомена.
  • Посмотрите на минификаторы JS и CSS, если вы еще этого не знаете - знаете, вещи, которые удаляют ненужные пробелы, такого родавещь.
  • Посмотрите на использование CDN для вашего JS и CSS, если вы заинтересованы в скорости.Они на много дешевле, чем раньше.Это забавное место, чтобы посмотреть на них: http://cloudharmony.com/speedtest До сих пор (это первые дни) я был очень впечатлен вступлением MaxCDN за 39,95 $ (обычно 99 $).
0 голосов
/ 10 сентября 2010

Это тема, которая меня действительно интересует, я только начал смотреть на сжатие и ускорение моих сайтов / экономию трафика.

Я нашел эту статью довольно полезно и интересно:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...