Кэширование файлов на стороне сервера Apache через .htaccess? - PullRequest
2 голосов
/ 30 апреля 2010
  1. Я запускаю новый веб-сайт и собираюсь включить несколько библиотек JS и хотел бы знать, как должен выглядеть шаблон файла .htaccess с кэшированием медиафайлов и файлов JS на

  2. Что лучше для сжатия, GZip или Deflate ?

  3. Является ли это лучшим / более быстрым решением для обслуживания этих библиотек JS из Google CDN, возможно, затем локально?

Я задаю вопрос CDN, поскольку некоторые из сценариев, обслуживаемых из GoogleCDN, потенциально могут обновлять и в конечном итоге нарушать макет веб-сайта, поэтому я подумал, что для меня будет лучше разместить их локально и кэшировать через веб-сервер, если он будет работать с та же / почти одинаковая скорость.

1 Ответ

0 голосов
/ 14 октября 2012

(Извините, респ слишком низкий, чтобы оставлять комментарии)

Что касается включения нескольких js-файлов, есть некоторые вещи, которые вы должны иметь в виду при создании сайта. Во-первых, каждый из этих файлов является запросом, который будет иметь некоторые накладные расходы на вашем сервере, если вы их обслуживаете. Даже на cdn это все равно будет запросом, который клиент должен сделать. Если у вас настроен сайт с использованием, скажем, cookie, то каждый запрос будет иметь немного больше накладных расходов из-за этого. Я упоминаю об этом из-за вашего кеширования, потому что вы спросили re CDN. Я имею в виду, что сначала вы должны подумать, откуда вы собираетесь предоставлять контент, а затем кэшировать. Лично я настроил второй суб-URL для обслуживания этого типа контента, так что static.website.com. Таким образом, содержание в запросе будет меньше накладных расходов, и вы сможете воспользоваться преимуществами загрузки parellel. Так что посмотрите Google CDN, да, конечно, если у вас там больше всего. Если вы боитесь его изменения или хотите разместить его локально, я бы порекомендовал вам создать для этого домен без файлов cookie.

Это подводит меня к кешированию и сжатию. Если у вас много файлов, возможно, вы захотите объединить их в один и обработать. Что я делаю, так это получаю 15 или около того js-файлов, которые мы используем, складываю их все в один файл, хеширую и делаю хэш именем файла. (Обратите внимание, это небольшая вещь, которую я написал для этапа сборки перед развертыванием). Таким образом, если какой-либо из файлов изменится, хеш-код изменится, и вы сразу же предоставите новый контент. Ваш риск кэширования js-файлов, скажем, в течение года, заключается в том, что вы не можете контролировать клиентский компьютер для получения нового файла, если только вы не измените его имя. Об этом нужно помнить при настройке кэширования, cdn и нескольких файлов js

Лично, как я уже сказал, я объединяю все файлы js в один, а затем сжимаю их в файл min (миниатюрный ajax) и использую его. Я делаю то же самое для CSS-файлов. Он находится на поддомене и обслуживается там.

В apache у меня есть следующее:

# Enable memory caching
CacheEnable mem /
# Limit the size of the cache to 50 Megabyte
MCacheSize 51200
AddOutputFilterByType DEFLATE application/x-javascript
ExpiresActive On
ExpiresDefault "access plus 1 second"
# hashed file so safe for long out cache
ExpiresByType text/javascript "access plus 1 years"

Наряду с дерьмом грузи больше ... но ты понял

Последнее замечание: если вы создаете мобильный сайт, вы действительно должны помнить о ключевой вещи: поддерживать низкую стоимость полосы пропускания. Как это влияет на ответ? Что касается моего мобильного сайта, у меня есть только 2-3 пользовательских js-файла, которые я обслуживаю таким же образом, но для jquery-мобильных я делаю это из официального репо. Зачем? потому что мобильный телефон клиента уже имеет его в кеше и, следовательно, экономит пропускную способность для них. Для настольного компьютера мне все равно, но в мобильном мире это имеет большое значение.

Я надеюсь, что эта помощь, дайте мне знать, если вам нужно больше информации о чем-то,

Приветствия

Robin

...