Я использую puppet 3.8.4 в debian. Я хочу рекурсивно установить владельца и группу в заданном каталоге, но установить разрешения только для самого каталога, т.е. Я не хочу изменять что-либо в каталоге, только chown / chgrp. Проблема в том, что когда я отправляю на сервер новую фиксацию git, пользователи все равно получат старую (последний ...
Я использую Nginx для обслуживания статических файлов (а также в качестве обратного прокси для моего NodeJS express RestAPI ). Проблема в том, что когда я отправляю на сервер новый коммит git, пользователи все равно будут получать старые (последней версии) файлы. На данный момент обходной путь состоит в том, чтобы пользователь очистил свой кеш в браузере.
В чем может быть причина этого? Я предполагаю, что это некоторая неправильная конфигурация кеширования на стороне сервера? См. Ниже мою конфигурацию nginx (базовая + включает).
Как вы можете видеть ниже, статические файлы (.html, .js, .css) находятся в / var / www / frontend
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
listen 80;
server_name **REMOVED_FOR_PRIVACY_REASONS**;
proxy_cache_valid 404 1m;
location / {
root /var/www/frontend;
index index.html
try_files try_files $uri $uri/ =404;
#proxy_cache backcache;
#proxy_cache_bypass $http_cache_control;
#add_header X-Proxy-Cache $upstream_cache_status;
}
location /api/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Я тоже думаю, что это связано с кэшированием на стороне клиента.
Я бы начал отлаживать это с помощью firebug или чего-то подобного, загрузите страницу и проверьте заголовки кеширования (etag / last-modified / cache-control / expires).
Пока мы занимаемся этим, мне очень понравился этот документ о кешировании HTTP:
https://www.mnot.net / cache_docs /
Сделано одним из тех, кто, тем не менее, создает стандарт HTTP.
Я думаю, что это не неправильная конфигурация кэширования на стороне сервера. Статические файлы автоматически кэшируются браузером. Вам нужно какое-то статическое управление версиями файлов, чтобы заставить браузер читать ваши измененные источники:
<link src="/static/style.css?v=xxxx">
<script language="javascript" type="text/javascript" src="/js/app.js?v=xxxx"></script>
В дополнение к другим ответам взгляните на hashbuster , инструмент, написанный на Python для решения подобных проблем. Описание гласит: «hashbuster - это инструмент для добавления строк запроса блокировки кеша к URL-адресам в ваших файлах HTML.
Если вы вносите много изменений в действующие веб-сайты, кеши браузера и прокси, вероятно, являются проклятие вашего существования. Если вам когда-либо приходилось указывать клиенту очистить кеш браузера, чтобы увидеть ваш последний код, то hashbuster для вас ».
Вы можете вызвать этот инструмент, например, через git обработчик post-receive на вашем сервере.