Можно ли заставить марионетку объединять рекурсивные и нерекурсивные изменения в заданном каталоге

Я использую 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;
    }
2
задан 5 November 2015 в 18:24
3 ответа

Я тоже думаю, что это связано с кэшированием на стороне клиента.

Я бы начал отлаживать это с помощью firebug или чего-то подобного, загрузите страницу и проверьте заголовки кеширования (etag / last-modified / cache-control / expires).

Пока мы занимаемся этим, мне очень понравился этот документ о кешировании HTTP:

https://www.mnot.net / cache_docs /

Сделано одним из тех, кто, тем не менее, создает стандарт HTTP.

1
ответ дан 3 December 2019 в 11:35

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

<link src="/static/style.css?v=xxxx">
<script language="javascript" type="text/javascript" src="/js/app.js?v=xxxx"></script>
1
ответ дан 3 December 2019 в 11:35

В дополнение к другим ответам взгляните на hashbuster , инструмент, написанный на Python для решения подобных проблем. Описание гласит: «hashbuster - это инструмент для добавления строк запроса блокировки кеша к URL-адресам в ваших файлах HTML.

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

Вы можете вызвать этот инструмент, например, через git обработчик post-receive на вашем сервере.

0
ответ дан 3 December 2019 в 11:35

Теги

Похожие вопросы