У меня очень простая целевая страница для моего домена. Последние пару дней я боролся с очень своеобразной проблемой.
vanilla>
./files/
./index.html
./main_style.css
files>
./back.gif
./back1.gif
./logo.png
<!DOCTYPE html>
<html>
<head>
<title>Vanilla</title>
<link rel="stylesheet" type="text/css" href="main_style.css"/>
</head>
<body>
<div>
<img class="logo" src="files/logo.png" />
</div>
</body>
</html>
html {
background-image: url("files/back1.gif");
background-repeat: repeat;
}
img.logo {
width: 471px;
height: 384px;
position: absolute;
top: 50%;
left: 50%;
margin-left: -235px;
margin-top: -192px;
}
Сразу после перезагрузки или чего-то в этом роде, и я открываю веб-сайт, все статические файлы загружаются должным образом в соответствии с версиями, которые присутствуют на сервере.
Однако, помимо этого, если я внесу изменение, например, в main_style.css, это никак не отразится. Даже открытие main_style.css в моем браузере не отражает изменений и показывает старую версию файла.
Также совсем недавно я переименовал фотографию из test.png в logo.png и соответствующим образом изменил ее в index.html. Файл index.html отражает соответствующее изменение, однако он не видит фотографию «logo.png» и возвращает ошибку 404 ... Очевидно, он находится в корневом веб-каталоге, но не обслуживается. Несмотря на это, я все еще могу получить доступ к СТАРЫМ фотографиям "test.png" через URL-адрес, даже если такого файла нет на сервере.
Я понимаю, что эта проблема определенно связана каким-то образом с кешированием, и я пробовал много решений в Интернете в своем поиске, и ни одно, похоже, не оказало никакого влияния на мою систему.
Я также вижу, что во многих случаях эта ситуация может быть вызвана VirtualBox или чем-то под названием Vagrant VM. На моей машине никогда не работала ни одна из этих вещей, а мой сервер работает на физическом ПК под моим столом.
Я подумал, что проблема могла быть вызвана тем, что я запустил более 100 обновлений, поскольку я давно не запускал свой сервер, поэтому я зашел так далеко, что сделал резервную копию моих личных данных и веб-данных с сервера и переустановил операционная система до последней версии и переустановите программное обеспечение оттуда.
Я только что закончил это делать и перенастроил все веб-программы, но, конечно же, проблема все еще остается.
Единственное, что я установил на машине после новой переустановки операционной системы:
Я читал, что это можно решить, установив Отправить файл в файле nginx.conf в выключен, но это ничего не решило.
Мои файлы nginx.conf и php.ini используются по умолчанию.
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# 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;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
server {
listen 80;
root /usr/share/nginx/vanilla/;
index index.html index.php index.htm;
server_name www.website.com website.com;
keepalive_timeout 10000;
client_max_body_size 1024M;
location / {
try_files $uri $uri/ =404;
#try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
В данной ситуации это действительно было связано с кешированием. Просто не на стороне сервера или моего браузера.
Кеширование, которое вызывало проблемы, было на стороне Cloudflare. Я использую эту службу, поскольку размещаю в своей домашней сети и хочу скрыть свой IP-адрес.
Как ни странно, я никогда раньше не сталкивался с этой проблемой с Cloudflare. Может, что-то изменилось с тех пор, как я в последний раз его использовал.
Как я это исправил:
Я настраиваю правила страницы, чтобы полностью прекратить кеширование в следующих конфигурациях:
А затем полностью стер сохраненный кеш Cloudflare, и теперь у меня больше нет проблем с кешированием или обслуживанием старых файлов.