Как включить кэширование на сайте


Кэш браузера | .htaccess

  • htaccess кэширование сохраняет содержимое веб-страницы на локальном компьютере, когда пользователь посещает ее;
  • Использование кэша браузера – веб-мастер дает указания браузерам, как следует рассматривать ресурсы.

Когда браузер отображает веб-страницу, он должен загрузить логотип, CSS файл и другие ресурсы:


Кэш браузера «запоминает» ресурсы, которые браузер уже загрузил. Когда посетитель переходит на другую страницу сайта, логотип, CSS файлы и т.д. не должны загружаться снова, потому что браузер уже «запомнил» их (сохранил). В этом заключается причина того, почему во время первого посещения загрузка веб-страницы занимает больше времени, чем при повторных.

Когда вы используете кэширование, файлы веб-страницы будут сохранены в кэше браузера. Страницы будут загружаться в разы быстрее при повторных посещениях. Также будет с другими страницами, которые используют одни ресурсы.

  • Измените заголовки запроса ресурсов, чтобы использовать кэширование;
  • Оптимизируйте свою стратегию кэширования.

Для большинства людей единственный способ кэширования сайта htaccess заключается в том, чтобы добавить код в файл .htaccess на веб-сервере.

Файл .htaccess контролирует многие важные настройки для вашего сайта.

Приведенный ниже код указывает браузеру, что именно кэшировать и как долго это «запоминать«. Его следует добавить в начало файла .htaccess:

## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType text/html "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType text/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 1 month" </IfModule> ## EXPIRES CACHING ##

Сохраните файл .htaccess, а затем обновите веб-страницу.

В приведенном выше коде заданы промежутки времени. Например, 1 year (1 год) или 1 month (1 месяц). Они связаны с типами файлов. Приведенный выше код устанавливает, что .jpg файлы (изображения) следует кэшировать в течение года.

Если бы вы хотели изменить это, чтобы и JPG изображения кэшировались в течение месяца, то вы бы просто заменили «1 год» на «1 месяц«. Указанные выше значения кэширования через htaccess оптимальны для большинства веб-страниц.

Описанный выше метод называется «Expires«, он помогает с кэшированием большинству новичков. После того, как вам станет проще работать с кэшированием, можете попробовать другой метод кэширования Cache-Control, который дает больше возможностей.

Возможно, что метод Expires не сработает на вашем сервере, в этом случае вы возможно захотите попробовать использовать Cache-Control.

Этот метод позволяет получить больше контроля над кэшированием страниц в браузере, но многие считают, что проще прописать все настройки один раз.

Пример использования в файле .htaccess:

# 1 Month for most static assets <filesMatch ".(css|jpg|jpeg|png|gif|js|ico)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch>

Приведенный выше код устанавливает заголовок Cache-Control в зависимости от типа файла.

Рассмотрим упомянутую выше строку кода кэширования в браузере htaccess:

# 1 Month for most static assets

Данная строка — просто примечание. Файл .htaccess игнорирует строки, начинающиеся с символа #. Это примечание рекомендуется, так как у вас может быть несколько различных наборов данных в качестве решения для кэширования файлов:

<FilesMatch ". (CSS | JPG | JPEG | PNG | GIF | JS | ICO) $">

Упомянутая выше строка говорит, что, «если файл будет одним из этих типов, то мы сделаем что-то с ним… »

Самое важное в этой строке то, что в ней перечислены различные типы файлов (CSS, JS, JPEG, PNG и т.д.) и что инструкции кэширования следует применять к этим типам файлов. Например, если вы не хотите, чтобы JPG файлы кэшировались в течение указанного периода времени, можете удалить «JPG«. Если вы хотите добавить HTML, то нужно в этой строке указать «HTML«:

Header set Cache-Control "max-age=2592000, public"

В упомянутой выше строке установлены фактические заголовки и значения:

  • Часть «Header set Cache-Control» — устанавливает заголовок;
  • Переменная «max-age=2592000» – указывает, сколько времени займет процесс кэширования (в секундах). В этом случае мы осуществляем кэширование в течение одного месяца (2592000) секунд;
  • Часть «public» сообщает о том, что это общедоступно.

Эта строка кэширования через htaccess закрывает оператор и заканчивает блок кода.

Если вы составляете список изображений, которые будут кэшироваться в течение года и более, помните, что если вы вносите изменения в свои страницы, они могут быть не видны всем пользователям. Так как пользователи обратятся к кэшируемым файлам, а не к существующим. Если есть файл, который вы периодически редактируете (например — файл CSS),то можно преодолеть проблему кэша с помощью цифрового отпечатка URL.

Получение нового (некэшируемого) файлового ресурса возможно при наличии уникального имени. Например, если файл CSS назван «main.css», то вместо этого мы могли бы назвать его «main_1.css». В следующий раз, когда мы поменяем его имя, мы можем назвать файл «main_2.css». Это полезно для файлов, которые периодически изменяются.

При кэшировании файлов htaccess необходимо указать один заголовок из пары Expires или Cache-Control max-age, а также один из заголовков Last-Modified или ETag для всех кэшируемых ресурсов. Использовать и Expires, и Cache-Control: max-age излишне, как и Last-Modified и ETag одновременно.

Данная публикация представляет собой перевод статьи «Leverage browser caching» , подготовленной дружной командой проекта Интернет-технологии.ру

телеграм канал. Подпишись, будет полезно!

HTTP-кеширование - веб-технологии для разработчиков

Производительность веб-сайтов и приложений можно значительно улучшить за счет повторного использования ранее извлеченных ресурсов. Веб-кеши уменьшают задержку и сетевой трафик и, таким образом, сокращают время, необходимое для отображения представления ресурса. Благодаря использованию кэширования HTTP веб-сайты становятся более отзывчивыми.

Тайники различных типов

Кэширование - это метод, который сохраняет копию данного ресурса и возвращает ее по запросу.Когда веб-кеш имеет запрошенный ресурс в своем хранилище, он перехватывает запрос и возвращает его копию вместо повторной загрузки с исходного сервера. Это позволяет достичь нескольких целей: снизить нагрузку на сервер, который не должен обслуживать всех клиентов сам, и повысить производительность за счет того, что он находится ближе к клиенту, т. Е. Требуется меньше времени для передачи ресурса обратно. Для веб-сайта это важный компонент в достижении высокой производительности. С другой стороны, он должен быть правильно настроен, поскольку не все ресурсы остаются неизменными навсегда: важно кэшировать ресурс только до тех пор, пока он не изменится, а не дольше.

Есть несколько видов кэшей: их можно сгруппировать в две основные категории: частные или общие кэши. Общий кэш - это кэш, в котором хранятся ответы для повторного использования более чем одним пользователем. Частный кэш предназначен для одного пользователя. На этой странице в основном рассказывается о кэшах браузера и прокси, но есть также кеши шлюза, CDN, кеши обратных прокси и балансировщики нагрузки, которые развертываются на веб-серверах для повышения надежности, производительности и масштабирования веб-сайтов и веб-приложений.

Частный кеш браузера

Частный кеш предназначен для одного пользователя. Возможно, вы уже видели «кеширование» в настройках вашего браузера. Кэш браузера содержит все документы, загруженные пользователем по протоколу HTTP. Этот кеш используется, чтобы сделать посещенные документы доступными для навигации назад / вперед, сохранения, просмотра в качестве источника и т. Д. Без необходимости дополнительной поездки на сервер. Это также улучшает автономный просмотр кэшированного содержимого.

Общие кеши прокси

Общий кеш - это кэш, в котором хранятся ответы для повторного использования более чем одним пользователем.Например, интернет-провайдер или ваша компания могут настроить веб-прокси как часть своей инфраструктуры локальной сети для обслуживания большого количества пользователей, чтобы популярные ресурсы многократно использовались повторно, уменьшая сетевой трафик и задержку.

Цели операций кеширования

HTTP-кэширование не является обязательным, но обычно желательно повторное использование кэшированного ресурса. Однако обычные HTTP-кеши обычно ограничиваются кэшированием ответов на GET и могут отклонять другие методы. Первичный ключ кеша состоит из метода запроса и целевого URI (часто используется только URI, поскольку только GET-запросы являются целями кэширования).Распространенные формы кэширования записей:

  • Успешные результаты поискового запроса: ответ 200 (OK) на запрос GET , содержащий такой ресурс, как HTML-документы, изображения или файлы.
  • Постоянные переадресации: ответ 301 (перемещен навсегда).
  • Ответы об ошибках: страница результатов 404 (не найдено).
  • Неполные результаты: ответ 206 (частичное содержимое).
  • Ответы, отличные от GET , если определено что-то подходящее для использования в качестве ключа кеша.

Запись кэша также может состоять из нескольких сохраненных ответов, различаемых вторичным ключом, если запрос является целью согласования содержимого. Для получения дополнительной информации см. Информацию о заголовке Vary ниже.

Управление кешированием

Поле общего заголовка Cache-Control HTTP / 1.1 используется для указания директив для механизмов кэширования как в запросах, так и в ответах. Используйте этот заголовок, чтобы определить свои политики кэширования с помощью множества предоставляемых им директив.

Нет кеширования

Кэш не должен хранить ничего о запросе клиента или ответе сервера. Запрос отправляется на сервер, и каждый раз загружается полный ответ.

 Cache-Control: без магазина 
Кэш, но перепроверить

Кэш отправит запрос на исходный сервер для проверки перед освобождением кэшированной копии.

 Управление кешем: без кеширования 
Частные и публичные тайники

Директива public указывает, что ответ может кэшироваться любым кешем.Это может быть полезно, если теперь необходимо кэшировать страницы с HTTP-аутентификацией или кодами состояния ответа, которые обычно не кэшируются.

С другой стороны, «частный» означает, что ответ предназначен только для одного пользователя и не должен храниться в общем кэше. В этом случае ответ может храниться в кэше частного браузера.

 Cache-Control: частный Cache-Control: общедоступный 
Срок действия

Самая важная директива здесь - " max-age = ", которая определяет максимальное время, в течение которого ресурс будет считаться свежим.В отличие от Expires , эта директива относится ко времени запроса. Для файлов в приложении, которые не изменятся, обычно можно добавить агрессивное кеширование. Сюда входят, например, статические файлы, такие как изображения, файлы CSS и файлы JavaScript.

Для получения дополнительной информации см. Также раздел «Свежесть» ниже.

 Cache-Control: max-age = 31536000 
Проверка

При использовании директивы « must-revalidate » кэш должен проверять состояние устаревших ресурсов перед их использованием, а истекшие ресурсы не должны использоваться.Дополнительные сведения см. В разделе «Проверка» ниже.

 Cache-Control: необходимо повторно проверить 

Pragma - это заголовок HTTP / 1.0, он не определен для HTTP-ответов и поэтому не является надежной заменой для общего заголовка HTTP / 1.1 Cache-Control , хотя он ведет себя так же, как Cache-Control: no-cache , если поле заголовка Cache-Control опущено в запросе. Используйте Pragma только для обратной совместимости с HTTP / 1.0 клиентов.

Свежесть

Когда ресурс сохраняется в кэше, теоретически он может обслуживаться кешем вечно. Кеши имеют ограниченное хранилище, поэтому элементы периодически удаляются из хранилища. Этот процесс называется вытеснение кеша . С другой стороны, некоторые ресурсы на сервере могут измениться, поэтому кеш следует обновить. Поскольку HTTP - это протокол клиент-сервер, серверы не могут связываться с кешами и клиентами при изменении ресурса; они должны сообщить время истечения срока действия ресурса.До истечения этого срока ресурс - свежих ; по истечении времени ресурс устаревший . Алгоритмы вытеснения часто отдают предпочтение свежим ресурсам над устаревшими. Обратите внимание, что устаревшие ресурсы не удаляются и не игнорируются; когда кэш получает запрос на устаревший ресурс, он пересылает этот запрос с If-None-Match , чтобы проверить, действительно ли он еще свеж. Если это так, сервер возвращает заголовок 304 (Not Modified), не отправляя тело запрошенного ресурса, что экономит часть полосы пропускания.

Вот пример этого процесса с прокси с общим кешем:

Срок действия свежести рассчитывается на основе нескольких заголовков. Если указан заголовок « Cache-Control: max-age = N », то время жизни актуальности равно N. Если этот заголовок отсутствует, что очень часто случается, проверяется, если Expires заголовок присутствует. Если заголовок Expires существует, то его значение за вычетом значения заголовка Date определяет срок действия актуальности.Наконец, если ни один заголовок отсутствует, ищите заголовок Last-Modified . Если этот заголовок присутствует, то время жизни кэша равно значению заголовка Date минус значение заголовка Last-modified , деленное на 10.
Срок действия рассчитывается следующим образом:

 expirationTime = responseTime + freshnessLifetime - currentAge 

, где responseTime - время получения ответа в соответствии с браузером.

Возобновленные ресурсы

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

Веб-разработчики изобрели метод, который Стив Содерс назвал оборотов [1] . Нечасто обновляемые файлы именуются особым образом: в их URL, обычно в имени файла, добавляется номер ревизии (или версии). Таким образом, каждая новая ревизия этого ресурса рассматривается как отдельный ресурс, который никогда не изменяет и срок действия которого может истекать очень далеко в будущем, обычно один год или даже больше.Чтобы иметь новые версии, все ссылки на них должны быть изменены, что является недостатком этого метода: дополнительная сложность, о которой обычно заботятся цепочки инструментов, используемые веб-разработчиками. Когда редко меняются ресурсы, они вызывают дополнительное изменение часто изменяемых ресурсов. Когда они читаются, читаются и новые версии остальных.

Этот метод имеет дополнительное преимущество: обновление двух кэшированных ресурсов одновременно не приведет к ситуации, когда устаревшая версия одного ресурса используется в сочетании с новой версией другого.Это очень важно, когда на веб-сайтах есть таблицы стилей CSS или сценарии JS, которые имеют взаимные зависимости, то есть они зависят друг от друга, поскольку ссылаются на одни и те же элементы HTML.

Версия ревизии, добавляемая к обновленным ресурсам, не обязательно должна быть классической строкой ревизии, такой как 1.1.3, или даже монотонно растущим набором номеров. Это может быть что угодно, предотвращающее коллизии, например хэш или дата.

Проверка кеша

Когда истечет срок действия кэшированного документа, он либо проверяется, либо снова выбирается.Проверка может произойти только в том случае, если сервер предоставил либо сильный валидатор , либо слабый валидатор .

Повторная проверка запускается, когда пользователь нажимает кнопку перезагрузки. Он также запускается при обычном просмотре, если кэшированный ответ включает заголовок « Cache-Control: must-revalidate ». Другой фактор - это настройки проверки кеша на панели настроек Advanced-> Cache . Существует возможность принудительно выполнять проверку каждый раз при загрузке документа.

ETags

Заголовок ответа ETag представляет собой значение , непрозрачное для агента-пользователя , которое может использоваться в качестве надежного валидатора. Это означает, что пользовательский агент HTTP, такой как браузер, не знает, что представляет эта строка, и не может предсказать, каким будет ее значение. Если заголовок ETag был частью ответа для ресурса, клиент может выдать If-None-Match в заголовке будущих запросов - для проверки кэшированного ресурса.

Заголовок ответа Last-Modified может использоваться как слабый валидатор. Он считается слабым, потому что имеет разрешение всего 1 секунду. Если в ответе присутствует заголовок Last-Modified-, то клиент может выдать заголовок запроса If-Modified-Since для проверки кэшированного документа.

Когда делается запрос на проверку, сервер может либо игнорировать запрос проверки и ответ с нормальным 200 OK , либо он может вернуть 304 Not Modified (с пустым телом), чтобы дать браузеру команду использовать его кешированную копию.Последний ответ также может включать заголовки, обновляющие срок действия кэшированного документа.

Различные ответы

Заголовок HTTP-ответа Vary определяет, как сопоставить будущие заголовки запроса, чтобы решить, можно ли использовать кэшированный ответ, а не запрашивать новый с исходного сервера.

Когда кэш получает запрос, который может быть удовлетворен с помощью кэшированного ответа, который имеет поле заголовка Vary , он не должен использовать этот кешированный ответ, если все поля заголовка, указанные в заголовке Vary , не совпадают в обоих исходных (кэшированных ) запрос и новый запрос.

Это может быть полезно, например, для динамического обслуживания контента. При использовании заголовка Vary: User-Agent кэширующие серверы должны учитывать пользовательский агент при принятии решения о том, следует ли обслуживать страницу из кеша. Если вы предоставляете мобильным пользователям различный контент, это может помочь вам избежать того, что кеш может по ошибке обслуживать настольную версию вашего сайта для мобильных пользователей. Кроме того, он может помочь Google и другим поисковым системам обнаружить мобильную версию страницы, а также может сообщить им, что маскировка не предназначена.

 Варьируется: User-Agent 

Поскольку значение заголовка User-Agent отличается («варьируется») для мобильных и настольных клиентов, кеши не будут использоваться для ошибочного обслуживания мобильного контента пользователям настольных компьютеров и наоборот.

См. Также

.

Как активировать кеширование браузера на локальном сайте и продвигать его на рабочий сайт?

Здравствуйте. Я создаю сайт на своем локальном компьютере, на виртуальном сервере nginx. Я отправляю изменения на свой действующий сайт на удаленном сервере Apache. Я хочу установить ваш плагин и активировать его функцию кеширования в браузере. Когда я попытался активировать его на своем локальном сайте, я увидел ошибку:

Кэширование браузера не работает должным образом:

- Возможно, на вашем сервере не включен модуль «expires» (mod_expires для Apache, ngx_http_headers_module для NGINX)
- Другой плагин может мешать конфигурации

У меня нет других плагинов кэширования (но у меня установлен плагин безопасности Wordfence).Как я могу это сделать правильно?

Спасибо.

edit: Чтобы быть ясным в моей разработке, я создаю сайт на своем локальном компьютере. Каждый раз, когда я вношу изменения, я синхронизирую файлы с удаленным сервером с помощью git и отправляю локальную базу данных на удаленный сервер с помощью плагина (WP Sync DB).

  • Эта тема была изменена 1 год 7 месяцев назад пользователем cag8f.
.

Использовать кеширование браузера | GTmetrix

Обзор

Время загрузки страницы можно значительно сократить, попросив посетителей сохранить и повторно использовать файлы, включенные в ваш веб-сайт.

  • Сокращает время загрузки страницы для повторных посетителей
  • Особенно эффективно на веб-сайтах, где пользователи регулярно посещают одни и те же области веб-сайта
  • Соотношение прибыли и затрат: высокое
  • Требуется доступ
Общие рекомендации по установке срока годности:
  • Истинно статический контент (глобальные стили CSS, логотипы и т. Д.) - доступ плюс 1 год
  • Все остальное - доступ плюс 1 неделя
Как ваш сайт оценивается по этой рекомендации?

Что такое кеширование браузера?

Каждый раз, когда браузер загружает веб-страницу, он должен загружать все веб-файлы для правильного отображения страница. Это включает в себя весь HTML, CSS, JavaScript и изображения.

Некоторые страницы могут состоять только из нескольких файлов и быть небольшими по размеру - может быть, пара килобайты.Однако для других файлов может быть много, а их может быть несколько. мегабайты большие. Twitter.com, например, составляет 3 МБ +.

Проблема двоякая.

  1. Эти большие файлы загружаются дольше и могут быть особенно болезненными, если у вас медленное интернет-соединение (или мобильное устройство).
  2. Каждый файл делает отдельный запрос к серверу. Чем больше запросов получает ваш сервер одновременно тем больше работы ему нужно сделать, только еще больше снижая скорость вашей страницы.

Кэширование браузера может помочь, сохраняя некоторые из этих файлов локально в браузере пользователя. Их первое посещение вашего сайта займет столько же времени, чтобы загрузить, однако, когда этот пользователь повторно посещает ваш сайт, обновляет страницу или даже переходит на другую страницу вашего сайта, у них уже есть некоторые файлы, которые им нужны локально.

Это означает, что браузер пользователя должен загружать меньше данных и меньше запросов. нужно сделать на ваш сервер. Результат? Уменьшено время загрузки страницы.

Как это работает?

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

Веб-сервер сообщает браузеру хранить эти файлы и не загружать их, когда вы заходите назад экономит время пользователей и пропускную способность веб-сервера.

Почему это важно?

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

Как использовать кеширование браузера

Чтобы включить кеширование браузера, вам необходимо отредактировать заголовки HTTP, чтобы установить время истечения срока действия для определенных типы файлов.

Настройка Apache для обслуживания соответствующих заголовков

Найдите файл .htaccess в корне вашего домена.Этот файл является скрытым, но должен отображаться в FTP-клиентах, таких как FileZilla или CORE. Вы можете редактировать файл .htaccess с помощью блокнота или любой другой формы базовый текстовый редактор.

В этом файле мы установим параметры кэширования, чтобы указать браузеру, какие типы файлов нужно кэшировать.

  ExpiresActive On # Изображений ExpiresByType image / jpeg "доступ плюс 1 год" ExpiresByType image / gif "доступ плюс 1 год" ExpiresByType image / png "доступ плюс 1 год" ExpiresByType image / webp "доступ плюс 1 год" ExpiresByType image / svg + xml "доступ плюс 1 год" ExpiresByType изображение / значок x «доступ плюс 1 год» # Видео ExpiresByType video / webm "доступ плюс 1 год" ExpiresByType video / mp4 "доступ плюс 1 год" ExpiresByType video / mpeg "доступ плюс 1 год" # Шрифты ExpiresByType font / ttf "доступ плюс 1 год" ExpiresByType font / otf "доступ плюс 1 год" ExpiresByType font / woff "доступ плюс 1 год" ExpiresByType font / woff2 "доступ плюс 1 год" Приложение ExpiresByType / font-woff "доступ плюс 1 год" # CSS, JavaScript ExpiresByType text / css "доступ плюс 1 месяц" ExpiresByType text / javascript "доступ плюс 1 месяц" Приложение ExpiresByType / javascript "доступ плюс 1 месяц" # Другое Приложение ExpiresByType / pdf "доступ плюс 1 месяц" ExpiresByType изображение / vnd.microsoft.icon «доступ плюс 1 год»  

В зависимости от файлов вашего веб-сайта вы можете установить разное время истечения срока действия. Если определенные типы файлов обновляются чаще, вы должны установить для них более раннее время истечения срока действия (например, файлы css)

Когда вы закончите, сохраните файл как есть, а не как файл .txt.

Если вы используете какую-либо форму CMS, могут быть доступны расширения кеша или плагины.

Рекомендации

  • Будьте агрессивны с кешированием для всех статических ресурсов
  • Срок действия не менее одного месяца (рекомендуется: доступ плюс 1 год)
  • Не устанавливайте кеширование более чем за год вперед!

Будьте осторожны

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

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

.

заголовков http - включить кеширование файлов css и js в Apache

. Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Смотрите также

Поделиться в соц. сетях

Опубликовать в Facebook
Опубликовать в Одноклассники
Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий