当前位置: 首页 > news >正文

项目里边更换了同名的图片地址 / 图片没有及时更新 / 什么原因

一、问题分析

1.1、分析一 浏览器缓存

项目里边更换了同名的图片地址,图片没有及时更新

可能是浏览器缓存的原因,浏览器会将之前访问过的文件缓存下来,下次访问同名的文件时会先从缓存中读取。
如果相同的图片地址没有发生变化,浏览器就会直接使用缓存中的图片,而不是重新请求服务器。这就导致了同名图片地址更换后,页面上显示的图片没有及时更新。

<img src="image.jpg?v=123456">

每次加载时随机生成一个不重复的参数,这样浏览器就会认为这是一个新的地址,不会从缓存中读取,而是重新请求服务器下载新的图片。

1.2、分析二 CDN缓存

项目里边更换了同名的图片地址,图片没有及时更新

如果你的图片是通过CDN分发的,那么清除浏览器缓存可能还不够,因为CDN也会有一定的缓存时间。
当你更换同名的图片地址后,CDN上的缓存并不会立即失效,而是需要等待一定时间后才会刷新。因此,你需要清除CDN缓存来解决同名图片地址更换后无法及时更新的问题。

不同的CDN提供商具体的清除缓存方法可能会有所不同。大多数CDN提供商都提供了很方便的缓存刷新工具,你只需要输入要刷新的URL或者目录,然后点击刷新按钮即可。一般来说,CDN刷新需要一定的时间来生效,具体时间取决于CDN提供商的刷新策略和缓存时间。

1.3、分析三 CDN缓存

有些用户请求到的图片是新的,有些用户请求到的是旧的,什么原因呢

这种情况很可能是因为CDN缓存没有完全刷新导致的。
当你更换同名的图片地址后,CDN上的缓存并不会立即失效,而是需要等待一定时间后才会刷新。在这个过程中,有些用户可能会请求到旧的缓存图片,有些用户则会请求到新的图片。

为了解决这个问题,你需要通过清除CDN缓存来确保所有用户都能够请求到最新的图片。不同CDN提供商具体的清除缓存方法可能会有所不同,但基本都提供了缓存刷新工具,你可以输入要刷新的URL或者目录,然后点击刷新按钮来清空缓存。请注意,CDN刷新需要一定的时间来生效,具体时间取决于CDN提供商的刷新策略和缓存时间。

1.4、分析四 浏览器缓存和CDN缓存的交互作用

同一个用户,有时候看到新的有时候看到旧的,什么原因呢

如果同一个用户在不同的时间请求同一个图片,有时候看到新的有时候看到旧的,可能是因为浏览器缓存和CDN缓存的交互作用。

浏览器在请求图片时,会先检查自己的缓存是否有与该图片对应的缓存,如果有,就直接使用缓存,不会再向服务器请求新的图片。而CDN缓存的更新时间可能比较长,所以在浏览器缓存没有失效之前,如果CDN缓存中还是旧的图片,用户就会看到旧的图片。

解决这个问题的方法就是清除浏览器缓存。如果你想保证用户能够看到最新的图片,可以在更换图片地址后,附加一个随机数或者时间戳作为图片地址的一部分,这样可以避免浏览器和CDN缓存的影响,强制让浏览器重新请求新的图片。

1.5、分析五 访问CDN的节点

同一个用户,有时候看到新的有时候看到旧的,什么原因呢

访问的CDN节点可能会影响用户看到的内容是否是新的或旧的。
CDN是通过缓存内容来提高网站访问速度的技术,它会根据用户的位置,选择最近的CDN节点来提供内容。
如果一个CDN节点缓存了旧的内容,那么用户可能会在其访问时看到旧的内容,而其他缓存了新内容的CDN节点则可以提供新的内容给用户。
因此,访问的CDN节点会对用户看到的内容是否是新的或旧的起到一定的影响。

二、解决问题

2.1、方法一

可以在更换图片地址就可以了,cdn缓存,cdn洪流

<img src="image1.jpg">

2.2、方法二 

<img src="image.jpg?v=123456">

2.3、方法三

可以使用强缓存和协商缓存的机制,来控制浏览器缓存的有效期和更新方式。 

2.4、方法四

清除CDN缓存

2.5、方法五

不着急的话,可以等一等~

三、过程记录

记录一、使用强缓存和协商缓存的机制,如何来控制浏览器缓存的有效期和更新方式

强缓存和协商缓存是控制浏览器缓存的有效期和更新方式的两种机制。

强缓存

强缓存是通过在响应头中设置Cache-Control和Expires字段来实现的。在服务器端设置响应头的时候,可以通过设置Cache-Control和Expires字段来控制浏览器缓存的有效期和更新方式。如果设置了Cache-Control和Expires字段,客户端在请求资源时,会首先通过判断这两个字段来决定是否使用缓存。

Expires字段指定了过期时间,过期时间是一个具体的时间点。例如:Expires: Wed, 21 Oct 2023 07:28:00 GMT。这个时间点是服务器端的时间,如果当前时间在过期时间之前,浏览器就会使用缓存,否则就会请求服务器。

Cache-Control字段是HTTP/1.1引入的,可以设置多个参数来控制缓存的行为。其中比较重要的有:

max-age:指定缓存的最大有效时间,单位为秒。例如:Cache-Control: max-age=3600表示缓存1小时,如果在这个时间内再次请求资源,浏览器就会使用缓存。public:指明响应可以被缓存,包括客户端缓存和代理服务器缓存。private:指明响应只能被客户端缓存,不能被代理服务器缓存。

协商缓存

协商缓存是通过在响应头中设置Last-Modified和ETag字段来实现的。在服务器端设置响应头的时候,可以通过设置Last-Modified和ETag字段来控制浏览器缓存的有效期和更新方式。如果设置了Last-Modified和ETag字段,客户端在请求资源时,会先发送一个请求到服务器,服务器会将这个请求中的If-Modified-Since(Last-Modified的值)和If-None-Match(ETag的值)字段与服务器中的资源进行比对,如果相同,则说明资源没有更新,可以使用缓存;否则说明资源已被更新,服务器会重新返回资源内容,并在响应头中设置新的Last-Modified和ETag字段。

强缓存和协商缓存可以通过设置不同的缓存头来控制浏览器缓存的有效期和更新方式,具体的设置可以根据实际应用场景进行调整。

记录二、理解CDN洪流

CDN洪流是指CDN(内容分发网络)服务器在一段时间内收到的大量请求。一些常见的解决方法包括:

1.增加CDN服务器数量:增加CDN服务器数量可以分担流量负载,提高响应速度和稳定性。

2.优化缓存:优化CDN缓存可以减少服务器请求,并降低服务器负载和响应时间。

3.使用负载均衡:使用负载均衡器可以将请求分配到不同的CDN服务器上,以便更好地处理CDN洪流。

4.限流:通过限制每秒请求的数量,可以减少CDN洪流的影响,并保护CDN服务器免受过载攻击。

5.使用CDN厂商提供的特殊解决方案:一些CDN厂商提供了特殊的解决方案,包括自适应调度器、预热、动态防御等,以帮助企业解决CDN洪流等问题。

四、欢迎交流指正

相关文章:

项目里边更换了同名的图片地址 / 图片没有及时更新 / 什么原因

一、问题分析 1.1、分析一 浏览器缓存 项目里边更换了同名的图片地址&#xff0c;图片没有及时更新 可能是浏览器缓存的原因&#xff0c;浏览器会将之前访问过的文件缓存下来&#xff0c;下次访问同名的文件时会先从缓存中读取。 如果相同的图片地址没有发生变化&#xff0c…...

RandomAccessFile学习笔记

文章目录 RandomAccessFile学习笔记前言1、RandomAccessFile基本介绍1.1 RandomAccessFile相关基本概念1.2 RandomAccessFile家族体系 2、RandomAccessFile基本使用2.1 RandomAccessFile常用API介绍2.2 RandomAccessFile常用API演示2.3 RandomAccessFile实现断点续传 RandomAcc…...

主流数据库类型总结

前言&#xff1a;随着互联网的高速发展&#xff0c;为了满足不同的应用场景&#xff0c;数据库的种类越来越多容易混淆&#xff0c;所以有必要在此总结一下。数据库根据数据结构可分为关系型数据库和非关系型数据库。非关系型数据库中根据应用场景又可分为键值&#xff08;Key-…...

程序员养生之道

程序员养生之道——如何保持健康的生活方式 摘要&#xff1a; 随着互联网行业的快速发展&#xff0c;越来越多的人选择从事程序员这个职业。然而&#xff0c;长时间的工作和高强度的压力容易导致程序员出现亚健康状况&#xff0c;如头发稀疏、视力下降、肥胖等问题。因此&#…...

CNN对 MNIST 数据库中的图像进行分类

加载 MNIST 数据库 MNIST 是机器学习领域最著名的数据集之一。 它有 70,000 张手写数字图像 - 下载非常简单 - 图像尺寸为 28x28 - 灰度图 from keras.datasets import mnist# 使用 Keras 导入MNIST 数据库 (X_train, y_train), (X_test, y_test) mnist.load_data()print(&…...

HarmonyOS开发工具简介

工具简介 更新时间: 2023-10-13 11:06 分享 添加收藏 说明 该文档匹配DevEco Studio 3.1.1 Release版本。 概述 HUAWEI DevEco Studio&#xff08;获取工具请单击链接下载&#xff0c;以下简称DevEco Studio&#xff09;是基于IntelliJ IDEA Community开源版本打造&#xff0c…...

大量索引场景下 Easysearch 和 Elasticsearch 的吞吐量差异

最近有客户在使用 Elasticsearch 搜索服务时发现集群有掉节点&#xff0c;并且有 master 收集节点信息超时的日志&#xff0c;节点的负载也很高&#xff0c;不只是 data 节点&#xff0c;master 和协调节点的 cpu 使用率都很高&#xff0c;看现象集群似乎遇到了性能瓶颈。 查看…...

东明石化集团领导团队参访震坤行工业超市

东明石化集团领导团队参访震坤行工业超市 10月16日&#xff0c;山东东明石化集团&#xff08;以下简称东明石化&#xff09;总裁李治先生一行带队来访参观交流震坤行&#xff0c;与震坤行工业超市董事长兼CEO陈龙、销售负责团队开展座谈。期间&#xff0c;双方就企业数字化转型…...

Java常见的面试题(很基础那种)

这里介绍一下,一些比较基础的Java面试题,比较适合应届生、实习生这些朋友。因为对于刚出来工作的Java工程师,很多企业都偏向招一些基础比较好的苗子回来培养。所以啊,在校的朋友们,一定要在读书期间,多做项目,如果没有实际的项目,可以在github找一些案例来做参考,先模…...

MySQL处理并发访问和高负载的关键技术和策略

我深知在数据库管理中处理并发访问和高负载的重要性。在这篇文章中&#xff0c;我将探讨MySQL处理并发访问和高负载的关键技术和策略&#xff0c;以帮助读者更好地优化数据库性能。 图片来源&#xff1a;MySQL处理并发访问和高负载的关键技术和策略 MySQL数据库在处理并发访问…...

软件测试jmeter基本使用

1安装与配置 1.jdk下载 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#jdk18-windows&#xff08;压缩包中会给&#xff09; 2.jmeter下载 Apache JMeter - Download Apache JMeter&#xff08;压缩包中有&#xff09; 3.操作教学 打开软件后新…...

一文讲透Python函数中的局部变量和全局变量

变量的作用域就是变量能够发挥作用的区域&#xff0c;超出既定区域后就无法发挥作用。根据变量的作用域可以将变量分为局部变量和全局变量。 1.局部变量 局部变量是在函数内部定义并使用的变量&#xff0c;也就是说只有在函数内部&#xff0c;在函数运行时才会有效&#xff0…...

【LeetCode】每日一题 2023_11_23 HTML 实体解析器(调库/打工)

文章目录 刷题前唠嗑题目&#xff1a;HTML 实体解析器题目描述代码与解题思路 结语 刷题前唠嗑 题目&#xff1a;HTML 实体解析器 题目链接&#xff1a;1410. HTML 实体解析器 题目描述 代码与解题思路 func entityParser(s string) (ans string) {return strings.NewRepla…...

Flask SocketIO 实现动态绘图

Flask-SocketIO 是基于 Flask 的一个扩展&#xff0c;用于简化在 Flask 应用中集成 WebSocket 功能。WebSocket 是一种在客户端和服务器之间实现实时双向通信的协议&#xff0c;常用于实现实时性要求较高的应用&#xff0c;如聊天应用、实时通知等&#xff0c;使得开发者可以更…...

软著项目推荐 深度学习 植物识别算法系统

文章目录 0 前言2 相关技术2.1 VGG-Net模型2.2 VGG-Net在植物识别的优势(1) 卷积核&#xff0c;池化核大小固定(2) 特征提取更全面(3) 网络训练误差收敛速度较快 3 VGG-Net的搭建3.1 Tornado简介(1) 优势(2) 关键代码 4 Inception V3 神经网络4.1 网络结构 5 开始训练5.1 数据集…...

自动驾驶HWP 功能规范

目 录 概述 1 目的 1范围 1术语及缩写 1设计与实验标准 1 设计标准 2设计标准执行优先顺序 2功能规范 Specification 4 功能描述 Functional Description 4 工作条件与应用范围 Application Scope 4道路交通 4天气与光线 4传感器方案及需求 5 驾驶员状态监控系统 5前视摄像…...

Ubuntu 环境下 NFS 服务安装及配置使用

需求&#xff1a;公司内部有多台物理服务器&#xff0c;需要A服务器上的文件让B服务器访问&#xff0c;也就是两台服务器共享文件&#xff0c;当然也可以对A服务器上的文件做权限管理&#xff0c;让B服务器只读或者可读可写 1、NFS 介绍 NFS 是 Network FileSystem 的缩写&…...

vue.js如何根据后台返回来的图片url进行图片下载

原创/朱季谦 最近在做一个前端vue.js对接的功能模块时&#xff0c;需要实现一个下载图片的功能&#xff0c;后台返回来的是一串图片url&#xff0c;试了很多种方法&#xff0c;发现点击下载时出来的效果&#xff0c;都是跳到一个新的图片网页&#xff0c;后来经过一番琢磨&…...

获取WordPress分类链接

CMS模板主题首页多以分类列表的形式展示内容&#xff0c;一般需要在适当位置添加某分类归档页面链接的按钮&#xff0c;下面的代码可以帮你实现。 代码一、通过分类别名获取Wordpress分类链接&#xff1a; <?php $catget_category_by_slug(‘wordpress’); $cat_linksget_…...

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 5》(9)

《Linux操作系统原理分析之Linux 进程管理 5》&#xff08;9&#xff09; 4 Linux 进程管理4.5 Linux 信号4.5.1 信号的作用和种类1.信号机制2.信号种类 4.5.2 信号的处理4.5.3 信号处理函数1&#xff0e;数据结构2&#xff0e; 处理函数 signal3&#xff0e;程序例 4 Linux 进…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...