Всем привет. Есть сайт на codeighniher
, прикол в следующем. Если, я что-то меняю в стилях или js
, в отдельных файлах, то, чтобы получить изменение мне нужно обновить страницу с очисткой кэша (ctrl+f5
в chrome) .
Если просто обновить страницу то никаких изменений по сайту нету.
Если писать стили в самом html
, то без проблем меняется информация простым f5.
В чем может быть проблема? Где копать? На всяких случай скидываю файл htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index.php|js|images|stylesheets|robots.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]
AddDefaultCharset utf-8
<Files *>
Header set Cache-Control: "private, pre-check=0, post-check=0, max-age=0"
Header set Expires: 0
Header set Pragma: no-cache
</Files>
Если Nginx
стоит перед Apache
и настроен для быстрой отдачи статики (CSS, JS, картинки), и управление Apache даже не передается. Поэтому настройки из .htaccess
не влияют на заголовки, а Nginx часто настраивают на длительное кеширование:
location ~* ^.+\.(jpg|jpeg|gif|png|css|js|bmp|txt)$ {
access_log off;
expires 14d; # кеширование в браузере на 14 дней
break;
}
Первое, что следует выяснить - какие именно заголовки ответа передаются с веб-сервера. Это можно сделать во вкладке Network
в консоли разработчика Хрома или Сеть
в Firefox. Далее фильтруем по маске .css
или .js
и обращаем внимание на заголовки:
Expires
(недостаток - на клиенте может стоять неверное время) иCache-Control
(лишен этого недостатка).В инструментах разработчика Хрома, в столбце Size надписи from disk cache
и from memory cache
как раз указывают на загрузку ресурса из кеша. А опция Disable cache
полностью отключает кеш, ресурсы всегда загружаются с сервера, но только пока открыты инструменты разработчика.
Через curl:
curl -I "http://site.ru/js/scrips.js"
Чтобы кеширования не было, должно стоять:
Cache-Control: no-cache, no-store, must-revalidate
или
Cache-Control: max-age=0
или Expires
указывает на дату в прошлом (минус 1 год, например).
Чтобы понять, участвует ли Apache в формировании ответа сервера, можно поставить дополнительный заголовок, через тот же .htaccess
:
# Ставим заголовок для понимания
Header set BackServer "Apache"
Если настроить веб-сервер невозможно (как в заданном вопросе), для файла следует указать дату его модификации в виде GET
-параметра, например, так:
<script src="/js/scrips.js?<?=date('ymdHis',
filemtime($_SERVER['DOCUMENT_ROOT'] . '/js/scrips.js'))?>"></script>
Кеширование в этом случае работать также будет, но при изменении файла GET
-параметр изменится, что заставит браузер загрузить новую версию.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нужно создать такую форму, которая при заполнении поля и нажатии на кнопку "далее" задаст новый вопрос пользователю, как тут в блоке "расчитайтестоимость...
Есть input type text в который при определенных условиях нужно запретить ввод текста
Есть json фаил с данными на 8000 строкЕго данные нужно перенести в HTML таблицу
Только начал изучать Django и столкнулся с проблемой: не применяются стили CSS ни на одной из страниц (homehtml и about