http Cache-Control详解及nginx设置Cache-Control、不缓存html的方法

Nginx 配置页面请求不缓存的方法 在Web开发中,缓存是提升网站性能的重要手段,但对于某些敏感页面(如登录页面、用户个人信息页面等),缓存可能会导致安全风险或数据不一致问题。因此,合理配置Nginx以确保某些页面不被缓存是非常必要的。通过合理配置 Nginx 的 HTTP 响应头,可以有效控制页面缓存行为,从而保护敏感信息、确保数据实时性并满足安全合规要求。本文介绍了全局禁止缓存、针对特定路径禁止缓存以及针对静态文件禁止缓存的配置方法,并提供了验证配置是否生效的方式。以下是通过 Nginx 配置禁止页面缓存的具体方法。 阅读详情
AI摘要

Cache-Control是HTTP/1.1协议中的一个响应头,用于控制资源的缓存策略。no-cache会先校验资源有效性,no-store禁止缓存,public和private定义了缓存可见性,max-age指定缓存有效期。在HTML页面中,通常设置为no-cache,静态资源如JS、CSS可设置长期缓存以优化加载速度。

Cache-Control是个http1.1响应头,用来控制资源缓存,它可取的值:

  • no-store;不允许缓存资源;
  • no-cache;使用缓存前,先去源服务器校验资源有效性,如果未变更,则响应304,不发送资源内容,使用cache中的资源,等于多了一次round-trip,能减少网络传输,如果已经过期,则响应200,并发送资源内容;会携带if-modified-since;if-match;no-cache和max-age:0,must-revalidate表达相同的意思;
  • public: 表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等)缓存;
  • private: 表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存它)。私有缓存可以缓存响应内容,比如:对应用户的本地浏览器。;
  • max-age: 设置缓存存储的最大周期,超过这个时间缓存被认为过期 (单位秒)。与Expires相反,时间是相对于请求的时间。
  • Expires:优先级比max-age优先级低;意味着某个date/time后失效;比如Expires: Wed, 21 Oct 2015 07:28:00 GMT
  • immutable:表示响应正文不会随时间而改变。资源(如果未过期)在服务器上不发生改变,因此客户端不应发送重新验证请求头(例如If-None-Match或 If-Modified-Since)来检查更新,即使用户显式地刷新页面;

对于html页面设置的建议

  • 使用缓存前,去源服务器校验有效性,nginx设置方法
location / {
    add_header Cache-Control no-cache;
}
  • 如果不想html被缓存,nginx设置方法
location / {
    add_header Cache-Control no-store,max-age:0; 
}

no-store只能阻止新的资源不会被缓存,不能阻止已经缓存的资源仍被使用,添加max-age:0,可以清除旧缓存;这个设置意味着每次请求都会去源服务器获取资源,状态码就是200;

对不变的js、css等静态资源建议设置:

location / {
    add_header Cache-Control public, max-age:最大值, immutable,max-age;
    //max-age可以设置超大的值,以达到永不过期的目的;
}

顺便说一下,pragma属于http1.0规范,一般来说现在的通信端都用http1.1,所以不缓存时,没必要设置此header了。

Pragma: no-cache

对单页应用SPA(single page application)推荐设置

参考Nginx configuration for SPAs (Single page applications) such as React or Angular,对单页应用,设置如下

# 医生前端静态资源
    location /static {
    # 过期时间=修改时间+1年
        expires modified 1y;
        # 可被任意地方(客户端、代理服务器)缓存
        add_header Cache-Control "public";
        access_log off;
        root   /some/path/frontend_folder;
    }

# 兜底,比如直接输入域名
   location  / {
   # 不允许缓存
     add_header Cache-Control no-store,max-age:0;
     root   /some/path/frontend_folder;
     index  index.html index.htm;
   }




相应的资源文件层级树
在这里插入图片描述

参考

Cache-Control
Expires

Nginx Cache-Control浏览器缓存配置实战指南 Cache-Control是HTTP缓存控制的核心机制,取代过时的Expires头,通过max-age等指令实现基于相对时间的精准缓存策略。其原理在于向浏览器和CDN传递明确的缓存语义(如public/private/no-store),直接影响资源复用率、首屏加载性能与CDN回源压力。在CentOS 7等生产环境中,需结合Nginx header模块(内置非插件)、SELinux调优及location分层匹配,才能真正激活memory cache与disk cache。本文聚焦Cache-Control配 阅读详情

相关推荐

Nginx浏览器缓存配置实战:Ubuntu 16.04下Cache-Control精准控制

浏览器缓存是Web性能优化的基础机制,其核心依赖HTTP缓存头(如Cache-Control)向客户端声明资源有效期与共享策略。原理上,它通过max-age、public/private、immutable等指令协同浏览器和CDN实现分层缓存,避免重复传输。技术价值在于零代码改动即可降低60%首屏加载时间、减少70%回源带宽,显著提升用户体验与服务器吞吐。典型应用场景包括静态资源长期缓存、HTML页面分级缓存、版本化前端资源治理等。本文聚焦Ubuntu 16.04环境下的Nginx 1.10.3实践,深入解

weixin_34372728的博客 353

缓存Cache-Control

缓存

m0_71902265的博客 5849

Nginx浏览器缓存配置实战:CentOS 8下header模块精准控制Cache-Control

浏览器缓存是Web性能优化的基础机制,其核心依赖HTTP响应头中的Cache-Control与Expires字段实现客户端资源复用。原理上,浏览器根据这些头自主决策是否复用本地副本,从而跳过网络请求、降低延迟并减轻服务端压力。该技术具备零代码侵入、兼容所有现代浏览器、与CDN天然协同等工程优势,广泛应用于静态资源加速、首屏渲染优化及API响应治理等场景。本文聚焦CentOS 8环境下的Nginx原生header模块实践,详解add_header与expires指令的优先级关系、分层缓存策略设计逻辑,以及ET

dianzongfan5428的博客 464

Nginx cache-control 配置说明

网上看到这篇文章说明,很不错,这里转载学习一下。 Nginx下关于缓存控制字段cache-control的配置说明 - 运维小结 - 散尽浮华 - 博客园 前言 HTTP协议的Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会影响另一个消息处理过程中的缓存处理过程。请求时的缓存指令: 包括: no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached...

zzhongcy的专栏 1万+

Nginx中Vary响应头:HTTP缓存机制的核心原理与实战配置指南

HTTP缓存机制是提升Web应用性能的关键技术,其核心在于缓存键的构建。缓存系统通过缓存键来唯一标识和存储响应内容,传统上仅使用请求URL作为键。然而,当同一URL因客户端请求头不同而需要返回差异化内容时,例如根据Accept-Encoding返回压缩或未压缩版本,或根据Accept-Language返回不同语言内容,仅靠URL作为键会导致缓存污染或内容错乱。Vary响应头正是解决此问题的机制,它指示缓存系统在构建缓存键时,必须额外考虑指定的请求头字段值,从而实现精准的缓存隔离。在Nginx等代理服务器中,

weixin_30568591的博客 493

Nginx与HTTP缓存控制:Expires和Cache-Control

首先,得知道 HTTP 缓存是个啥。简单来说,当你第一次访问某个网页的时候,浏览器会下载一堆东西(比如 HTML、CSS、JavaScript 文件)到本地。下次再访问这个页面时,浏览器就不用从服务器重新下载这些文件了,而是直接从本地缓存里读取,这样就能大大加快页面加载的速度。好了,亲爱的小伙伴们,今天的讲解就到这里啦!你现在已经掌握了如何使用 Nginx 控制 HTTP 缓存的技能。记住,合理的缓存策略不仅可以提高用户体验,还能减轻服务器的压力。赶紧去试试看吧!如果你有任何问题,记得随时回来找我哦!

java专栏 1477

浏览器缓存机制(expires,cache-control,last-modified,etag)与Nginx配置调优

浏览器缓存机制(expires,cache-control,last-modified,etag)与Nginx配置调优

scoful的专栏 2万+

Nginx控制前端静态资源不缓存

背景 项目中使用Nginx代理前端代码,每次前端代码修改完成后,浏览器有时候并不会生效。 原因是很多浏览器做了缓存,导致没有使用最新的前端代码。 解决 通过HTTP Header中的Cache-control字段(no-cache)来控制是否开启缓存。 相关可选项如下: no-cache:客户端可以缓存,但是每次使用缓存资源都必须发请求验证其有效性。如果没有变化返回304,如果发生变化,那理论上就是200。 no-store:禁止缓存,不使用任何缓存 修改前的配置: # 原有静态资源配置

甘蓝的专栏 7137

Nginx下关于缓存控制字段cache-control的配置说明

与max-age 的区别是: max-age用于普通缓存,而s-maxage用于代理缓存。设置相对过期时间, max-age指明以秒为单位的缓存时间. 若对静态资源只缓存一次, 可以设置max-age的值为315360000000 (一万年). 比如对于提交的订单,为了防止浏览器回退重新提交,可以使用Cache-Control之no-store绝对禁止缓存,即便浏览器回退依然请求的是服务器,进而判断订单的状态给出相应的提示信息!指定不缓存响应,表明资源不进行缓存。不得对资源进行转换或转变。

maizaozao的专栏 2288

nginx-cache-control:没有缓存清除模块的 Nginx 缓存控制插件

nginx-缓存控制 没有缓存清除模块的 Nginx 缓存控制插件 部分代码是基于其他 Nginx Cache Plugins 的代码,但这是设计为简单、轻量级的实现 == 具体.... == Mark Jaquith 提出了使用强制动态页面加载的标头的基本设计,并在 2012 年的一篇博客文章中对其进行了描述。 可以在 example.conf 中找到 Nginx 的 php 配置文件示例 时间戳代码基于 Nginx Helper 中使用的代码,它使用了 nginx-cache-purge 模块。 我回顾了 Peter Molnar 的 WP-FFPC 插件,它使用了不同的缓存技术。 我的分类链接检索来自他的代码。 看着这些插件让我有了扩展这个插件的想法,它被设计成尽可能地简约。 == DDOS 保护 == 假设这成为一种流行的缓存方法,如果他们开始发送 X-Nginx-Ca

STM32实战——七段数码管动态扫描技术详解

本文详细解析了STM32控制七段数码管的动态扫描技术,包括硬件连接、CubeMX配置及编程实现。通过分时复用原理和优化代码逻辑,实现稳定显示效果,并解决亮度不均、闪烁等常见问题。适合嵌入式开发者快速掌握STM32数码管驱动技术。

weixin_42561143的博客 279

nginx 配置浏览器不缓存文件 每次都会从服务器 请求新的文件

修改之前 需要全局刷新,才会重新请求index.js 文件修改之后,不用全局刷新 ,就可以重新请求到最新的 index.js。

2301_79996063的博客 6088

Python_构建同花顺问财智能选股API服务

本文详细介绍了如何使用Python构建同花顺问财智能选股API服务,涵盖从环境准备、核心API开发到高级功能扩展的全过程。通过Flask框架和pywencai库,开发者可以快速搭建稳定可靠的选股接口,实现自动化股票筛选与交易系统集成,提升量化投资效率。

weixin_30596343的博客 328

Nginx缓存机制优化:FastCGI缓存与浏览器缓存

摘要:本文深入探讨Nginx缓存机制优化中的FastCGI缓存与浏览器缓存。FastCGI缓存用于存储动态内容,通过合理配置缓存路径、键名和有效期可显著提升响应速度;浏览器缓存则通过设置HTTP头信息控制静态资源本地存储。文章详细介绍了两种缓存的配置方法、优化策略及常见问题解决方案,包括缓存命中率提升和更新机制优化。通过合理运用这两种缓存技术,可有效降低服务器负载,提高网站访问性能。

fykam的博客 1147

GAMES101学习-第8课进行shader的初步了解

详细理解课上展示的像素着色器GLSL,以及了解了API、OpenGL、DirectX到底是什么,还有shadertoy这个网站的初步探索。

qq_41835314的博客 1917

非模式物种PySCENIC分析流程

外的物种想要做scenic分析的话, 可以使用同源基因转换后再进行分析, 将要分析的物种的gene Symbol转换为人、小鼠或者是果蝇的gene Symbol后进行分析。odiscus sinensis(中华鳖)的基因-细胞的矩阵,进行pyscenic分析的话,可参考以下示例。目前pyscenic分析支持的物种仅为人、小鼠和果蝇,其他物种暂时还没有相应的数据库,因。本教程基于Linux及服务。SCENIC转录因子分析。器中的Rstudio环境。例如我们有一个Pel。

weixin_47195452的博客 932

前端性能-HTTP缓存

开启HTTP缓存是提升前端性能的常见手段之一。通过缓存,浏览器可以临时存储资源,在后续请求中直接使用本地副本,从而有效减少HTTP请求次数,显著缩短网页加载时间。以下是HTTP缓存的几个关键点:1、减少重复请求:浏览器存储已请求过的资源,避免重复请求服务器。2、设置缓存头:通过服务器端的Cache-Control、Expires或ETag响应头,指导浏览器如何缓存资源。

weixin_43909743的博客 1454

远程桌面报‘数据加密错误‘?可能是网卡设置惹的祸(附TCP校验关闭教程)

本文深入分析远程桌面连接中出现的'数据加密错误'问题,指出网卡设置可能是根本原因,并提供详细的TCP校验关闭教程。通过禁用网卡高级属性中的'TCP校验和IPv4'与'IPv4承载卸载'功能,可有效解决RDP协议与硬件加速的兼容性问题,适用于Windows和Linux系统。

view3的博客 276

html cache control 设置,关于 浏览器 Cache-Control 不能设置问题。

首先,缓存问题依靠html的meta标签解决是不靠谱的,一般大型网站都依靠nginx server在 http头中对静态资源设置缓存。而影响缓存的http头有好几个,尽管http 1.1协议之后,从协议本身的规范的角度可以认为 只要有cache-control这个头存在,pragma expires就无效了,但你不能相信所有浏览器所有版本都完全按照标准进行了实现,所以,比较职业的做法是把所有该下...

weixin_35212962的博客 1670

STM32F4驱动ADS1220高精度ADC:从SPI配置到数据校准的完整实战指南

本文详细介绍了如何使用STM32F4微控制器驱动ADS1220高精度ADC,涵盖从SPI接口配置、寄存器设置到数据采集与校准的全过程。通过实战代码示例和硬件设计要点,帮助开发者快速构建高精度数据采集系统,适用于工业测量和精密仪器等应用场景。

weixin_26918763的博客 224

app编写需要哪种语言

原生App开发:优选Swift(iOS)和Kotlin(Android)。跨平台App开发:优选Flutter(Dart)和React Native(JavaScript)。游戏App开发:优选Unity(C#)和Unreal Engine(C++)。低代码工具:适合简单、快速的App制作。

fanying_98的博客 2070

HTTP 缓存机制详解:强缓存和协商缓存

HTTP 缓存是浏览器和服务器之间的一种机制,用于减少网络请求,提高页面加载速度,降低服务器压力。强缓存是指浏览器在缓存有效期内,直接从本地缓存读取资源,不会向服务器发送任何请求。协商缓存是指浏览器向服务器发送请求,服务器判断资源是否更新,如果未更新,返回 304 状态码,浏览器使用本地缓存。特性强缓存协商缓存网络请求❌ 无请求✅ 有请求(但响应体可能为空)响应速度⚡ 最快(0ms)🚀 快(需要网络往返)服务器压力✅ 无压力⚠️ 有压力(需要验证)数据新鲜度❌ 可能过期✅ 总是最新带宽消耗。

weixin_46504400的博客 1199

产品路线图的三种模型(RICE/MoSCoW/Kano),教你如何对需求进行优先级排序

RICE/MoSCoW/Kano三种模型,教你如何对需求进行优先级排序。 也许你会让业务提供一份ROI,记得前不久参加过一场立项会评审,一位很有意思的小产品在会上讲不清楚ROI,评审们要求会后重新梳理,小产品表达不要为难业务方干一些他们不擅长的事了。这个看似笑话的经历,背后隐藏着价值判断已经流于形式。 也许你会要求业务方直接给出需求优先级列表,把任务分为P0到P5,这样的划分除了按需求本质的优先级还同时考虑了开发资源、开发难度等问题。毫不夸张地说,我曾经拿到一张全是P0级别的需求清单,如果一切任务都是高

wenyusuran的专栏 5538

html cache-control怎么设置,关于 浏览器 Cache-Control 不能设置问题。

首先,缓存问题依靠html的meta标签解决是不靠谱的,一般大型网站都依靠nginx server在 http头中对静态资源设置缓存。而影响缓存的http头有好几个,尽管http 1.1协议之后,从协议本身的规范的角度可以认为 只要有cache-control这个头存在,pragma expires就无效了,但你不能相信所有浏览器所有版本都完全按照标准进行了实现,所以,比较职业的做法是把所有该下...

weixin_39923262的博客 1963

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

nginx强制刷新用户缓存_HTTP 缓存

HTTP 缓存分为强缓存和协商缓存.HTTP 缓存控制机制 HTML Meta 标记// 当前页面不缓存, 每次访问都去服务器拉取. 只有部分浏览器支持.HTTP 头信息HTTP 头信息 强缓存 (200 from cache)判断的字段: expire 或 cache-controlexpire [http 1.0 的标准], 存储的是过期的具体时间cache-control [h...

weixin_39827775的博客 1333

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

如何设置浏览器不缓存网页

这里expires -1;表示过期时间为过去,即告诉浏览器页面已经过期,不应该被缓存。Cache-Control响应头的no-cache、no-store和must-revalidate指令进一步强化了不缓存的要求。

培根芝士的专栏 1470
上一篇: 苹果手机微信扫码下载pdf文件,出现空白页。
下一篇: springboot rabbitmq 延时消息、延迟消息、非阻塞重试机制实现
wangjun5159
博客等级 码龄17年 602粉丝 506原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值