设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 75|回复: 7

吴彦祖们,问个NGINX关于Expires缓存和purge清除问题,冲突.....

[复制链接]

43

主题

344

回帖

883

积分

高级会员

积分
883
发表于 2020-8-13 00:57:46 | 显示全部楼层 |阅读模式
今天闲得无聊,在反代的nginx前端上给location中加上了句

Expires 30d;
(类型有JPG\GIF\HTML\CSS等)
意思是缓存30天,也就是30天内不再从服务器拉取,减轻服务器负担,算是优化吧。

一天过去了,我刚刚突然想到,我有个重要的HTML是经常更新的。那现在怎么办呢?是不是今天我改了之后,来过的访客,访问过那个HMTL的人,30天内就收不到更新了呢?除了改HTML文件名以外没其他办法了吗?(问题在于,这个HTML也是通过CSS调用加载的,可是CSS也被缓存30D了啊)

如果我用purge命令清理掉这个html的反代缓存是不是也不行呢?(因为我觉得修改增加Expires 30d;之后浏览过的访客的客户端,30天内不会再去访问我的HTML了吧,感觉和我是否服务器上purge过没太大关系了啊,没救了吗?)

吴彦祖们,这些浏览过Expires 30d;的访客30天内是就没救了吗?
回复

使用道具 举报

168

主题

2452

回帖

5456

积分

论坛元老

积分
5456
发表于 2020-8-13 00:59:15 | 显示全部楼层
字太多了,我不喜欢看,楼下解答
回复

使用道具 举报

12

主题

1250

回帖

2586

积分

金牌会员

积分
2586
发表于 2020-8-13 01:00:39 | 显示全部楼层
location = 某html位置
写掉过期

上述配置优先级高于 location /

回复

使用道具 举报

43

主题

344

回帖

883

积分

高级会员

积分
883
 楼主| 发表于 2020-8-13 01:03:19 | 显示全部楼层

iks 发表于 2020-8-13 01:00

location = 某html位置
写掉过期

我已经把
Expires 30d;去掉了,加#了。可我想救回今天30天的访客啊。他们的机制是不会再去更新了吗?
就算我把
location = 某html位置
写掉过期
这些访客也无法得知吧?除非30天后这样吧?
回复

使用道具 举报

343

主题

2032

回帖

5237

积分

论坛元老

积分
5237
发表于 2020-8-13 01:00:00 | 显示全部楼层

squalll 发表于 2020-8-13 01:03

我已经把
Expires 30d;去掉了,加#了。可我想救回今天30天的访客啊。他们的机制是不会再去更新了吗?
就 ...

浏览器会查询服务器是否有新版本,如果服务器没有改变,就不拉取新数据,如果服务器有新版本,本地保存的版本就会过期
你设置的30天过期,无论服务器是否有新版本都强制拉取新数据
回复

使用道具 举报

43

主题

344

回帖

883

积分

高级会员

积分
883
 楼主| 发表于 2020-8-13 01:06:07 | 显示全部楼层
本帖最后由 squalll 于 2020-8-13 01:20 编辑

By小酷 发表于 2020-8-13 01:06

浏览器会查询服务器是否有新版本,如果服务器没有改变,就不拉取新数据,如果服务器有新版本,本地保存的 ...


吓死我了。谢谢大佬
我麻烦你还有2个问题。
1.您是说,我的访客问题不是问题,只要我更新就行了,对吧?
2.按你说的,Expires 30d;意思是指,没有更新的情况下,就不会去拉取数据,但是有更新了,Expires 30d;就失效对吗?。那我如果加回去Expires 30d;也是可以的了?(因为我服务器一但更新,他们也就更新了)。那我加回去会更好吧?(我的原理是,能优化,那很好,如果不能优化30D,宁愿不优化也不能让访客不更新)

说明:Last-Modified是没有启用的,只启用了Expires 30d
回复

使用道具 举报

343

主题

2032

回帖

5237

积分

论坛元老

积分
5237
发表于 2020-8-13 01:03:00 | 显示全部楼层

squalll 发表于 2020-8-13 01:09

吓死我了。谢谢大佬
我麻烦你还有2个问题。
1.您是说,我的访客问题不是问题,只要我更新就行了,对吧?

部分老旧浏览器可能不会检查服务器更新,没什么必要不要添加,chrome firfox之类的才会遵守标准浏览器协议执行,为了某些国产特制浏览器,还是不要加的好
再说了,本身浏览器就会自动缓存某些图片 js css的东西,不需要你特意指定
回复

使用道具 举报

146

主题

6690

回帖

1万

积分

论坛元老

积分
13888
发表于 2020-8-13 01:09:29 | 显示全部楼层
本帖最后由 squalll 于 2020-8-13 01:41 编辑

By小酷 发表于 2020-8-13 01:22

部分老旧浏览器可能不会检查服务器更新,没什么必要不要添加,chrome firfox之类的才会遵守标准浏览器协 ...


试了下,IE8倒是还行。

做了个测试,开启Expires 30d;然后purge了反代缓存之后,如大佬您所说,浏览器还是会去检查是否更新,然后浏览器显示的是更新后的页面了。
还是不加了。感觉今天吓坏了。

唯一比较遗憾的、也是今天想加Expires 30d;的原因是,发现360浏览器用chrome核心,访问jpg\css之类的,只要关闭,重启,再访问就需要从网站拉取(不关闭浏览器的情况下,二次访问时会form cache disk的,关了就不行)。记得以前版本不是这样的。不过,加了Expires 30d;它还是关了重启要从网站拉,只有IE8倒是Expires 30d;有效。也不知道是改了版本规则还是什么原因。
总之,
谢谢大佬赐教
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2026-2-7 11:46 , Processed in 0.016821 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表