时间戳 解决浏览器缓存问题

1、缓存

 访问数据库的效率低,使用缓存可以不用每次请求都访问数据库,速度快

命中率=命中数/(命中数+未命中数)

缓存更新策略:FIFO先进先出 队列方式、最少使用的先被清理掉、最近最少使用的先被清理掉

2、文件缓存

  把缓存存储到硬盘

如:php代码 编译成html静态文件存储起来,不用每次都重新翻译、语法检查等------解释 执行


3、客户端缓存(web缓存)   (浏览器实现

第一次请求时,会把响应结果缓存起来,当第2次请求时,浏览器会询问服务器 缓存是否修改过,若没有则直接从缓存中获取,不发起正在的http请求服务器

减少网络延迟、增强用户体验

前端页面缓存  目的:减少请求

服务端压缩数据 目的:减少数据传输量



缓存到期、缓存被清除、ctrl+F5强制刷新-----------会更新缓存

 有时在服务端更新了文件,但客户端未更新,需强制刷新或清空浏览器本地缓存。可在静态文件后使用时间戳方式避免缓存



4、web服务器缓存

nginx缓存

### 如何解决 Nginx 浏览器缓存问题 #### 配置方法和解决方案 对于通过 Nginx 来控制浏览器缓存问题,可以采取多种策略来确保资源能够被正确加载而不受陈旧缓存的影响。 #### 修改 HTTP 响应头设置 为了防止页面或静态资源在客户端长时间缓存,在 Nginx 中可以通过修改响应头部信息实现更精确的缓存管理。具体来说: - **禁用缓存**:如果希望完全关闭某些请求类型的缓存功能,则可以在 location 或 server 段内加入如下指令[^2]: ```nginx add_header Cache-Control "no-cache, no-store, must-revalidate"; add_header Pragma "no-cache"; add_header Expires 0; ``` 这些命令会向客户端发送信号表明该响应不应该被存储于任何地方,并且每次访问都需要重新获取最新数据。 - **使用 ETag 和 Last-Modified 进行条件验证** 另一种方式是利用 `ETag` 及 `Last-Modified` 头部来进行高效的增量更新检查。当文件发生变化时才返回新的版本给用户端;反之则告知其继续沿用本地副本即可。这既提高了效率又减少了不必要的网络传输开销[^1]。 ```nginx location /static/ { etag on; if_modified_since before; } ``` 上述配置启用了 ETag 功能并设置了基于时间戳(`If-Modified-Since`) 的条件 GET 请求处理逻辑。 - **自定义缓存有效期 (Cache-Control)** 除了简单地阻止一切形式的缓存外,还可以根据不同需求设定特定时间段内的可接受范围。比如让图片、样式表等长期不变动的内容保持较久的有效期,而 HTML 文件只允许短暂保存以便及时反映更改后的状态。 ```nginx location ~* \.(jpg|jpeg|png|gif)$ { expires max; } location ~* \.html$ { expires -1; } ``` 这段代码片段表示图像类资源将尽可能长久地存在于用户的设备上(-max),而对于HTML文档而言则是强制即时刷新(-1)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值