我有一个非常基本的域名登录页面。过去几天,我一直在努力解决一个非常奇怪的问题。
例如,该目录包含:
vanilla>
./files/
./index.html
./main_style.css
files>
./back.gif
./back1.gif
./logo.png
index.html的内容:
<!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>
main_style.css的内容:
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 错误... 它显然位于 Web 根目录中,但未提供。即便如此,我仍然可以通过 URL 访问旧照片“test.png”,即使服务器上没有这样的文件。
我已尝试过:
我明白这个问题肯定与缓存有某种联系,并且我在网上搜索时尝试了很多解决方案,但似乎都没有对我的系统产生任何影响。
我还发现,在很多情况下,这种情况可能是由 VirtualBox 或 Vagrant VM 引起的。我的机器上从来没有运行过这两样东西,我的服务器运行在我办公桌下的一台物理 PC 上。
我认为该问题可能是由于我运行了超过 100 次更新而导致的,因为我有一段时间没有运行我的服务器了,所以我甚至从服务器备份了我的个人数据和网络数据并重新安装操作系统到最新版本,然后从那里重新安装软件。
我刚刚完成了这项工作并重新配置了所有的网络软件,但可以肯定的是,它仍然存在同样的问题。
重新安装操作系统后,我在机器上安装的唯一东西是:
- openssh-服务器
- 桑巴
- nginx
- mysql 服务器
- php-fpm
- php-mysql
我读到过,可以通过设置来解决此问题发送文件在 nginx.conf 文件中离开,但这并没有解决任何问题。
我的nginx.conf文件和php.ini文件都是默认的。
nginx.conf:
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;
}
}
答案1
这次的情况确实和缓存有关,只不过不是在服务器端,也不是在浏览器端。
导致问题的缓存在 Cloudflare 方面。我使用这项服务是因为我在家庭网络上托管并希望隐藏我的 IP 地址。
奇怪的是,我以前从未遇到过 Cloudflare 的这个问题。也许自从我上次使用它以来,有些东西发生了变化。
我如何修复它:
我设置了页面规则以在以下配置上完全停止缓存:
- *.website.com/*
- website.com/*
然后完全清除 Cloudflare 存储的缓存,现在我不再遇到缓存或提供旧文件的问题。