Сделайте так, чтобы клиенты браузера обновляли кэшированный контент после отключения кеша NGINX - PullRequest
0 голосов
/ 11 марта 2019

По какой-то причине некоторые браузерные клиенты веб-сайта получили «неправильную» версию сайта с ошибками на странице (встроенный в Angular).Все находится за NGINX dockerized webserver - все сайты также являются docker-контейнерами.

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

strict-transport-security: max-age=31536000

в ответе, который я удалил.Теперь у меня есть шаблон NGINX:

location / {
                proxy_buffers         8 16k;  # Buffer pool = 8 buffers of 16k  
                proxy_buffer_size     16k;    # 16k of buffers from pool used for headers 
                {{ if eq $proto "uwsgi" }}
                include uwsgi_params;
                uwsgi_pass {{ trim $proto }}://{{ trim $host }};
                {{ else }}
                proxy_pass {{ trim $proto }}://{{ trim $host }};
                {{ end }}
                {{ if (exists (printf "/etc/nginx/htpasswd/%s" $host)) }}
                auth_basic      "Restricted {{ $host }}";
                auth_basic_user_file    {{ (printf "/etc/nginx/htpasswd/%s" $host) }};
                {{ end }}
                {{ if (exists (printf "/etc/nginx/vhost.d/%s_location" $host)) }}
                include {{ printf "/etc/nginx/vhost.d/%s_location" $host}};
                {{ else if (exists "/etc/nginx/vhost.d/default_location") }}
                include /etc/nginx/vhost.d/default_location;
                {{ end }}
                add_header Last-Modified $date_gmt;
                add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
                if_modified_since off;
                expires off;
                etag off;
        }

        location ~* ^.+\.(atom|bmp|bz2|css|doc|docx|eot|exe|gif|gz|ico|jpeg|jpg|js|mid|midi|mp4|ogg|ogv|otf|pdf|png|ppt|pptx|rar|rss|rtf|svg|svgz|swf|tar|tgz|ttf|txt|wav|woff|xls|xml|zip)$ {
                expires max;
                {{ if eq $proto "uwsgi" }}
                include uwsgi_params;
                uwsgi_pass {{ trim $proto }}://{{ trim $host }};
                {{ else }}
                proxy_pass {{ trim $proto }}://{{ trim $host }};
                {{ end }}
                {{ if (exists (printf "/etc/nginx/htpasswd/%s" $host)) }}
                auth_basic      "Restricted {{ $host }}";
                auth_basic_user_file    {{ (printf "/etc/nginx/htpasswd/%s" $host) }};
                {{ end }}
                {{ if (exists (printf "/etc/nginx/vhost.d/%s_location" $host)) }}
                include {{ printf "/etc/nginx/vhost.d/%s_location" $host}};
                {{ else if (exists "/etc/nginx/vhost.d/default_location") }}
                include /etc/nginx/vhost.d/default_location;
                {{ end }}
        }

Я добавил бит для удаления кэша:

add_header Last-Modified $date_gmt;
                add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
                if_modified_since off;
                expires off;
                etag off;

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

Есть ли способ получить текущий "сломанный" мобильный телефонстраниц, чтобы просто перезагрузить контент и заставить новые данные проходить?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...