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

服务端Web资源缓存

1.前言

虽然客户端缓存效果很好,但它有一个核心问题:要在本地提供资源,必须先将其存储在缓存中。因此,每个客户端都需要其缓存的资源。如果请求的资源需要大量计算,则无法扩展。服务器端缓存背后的理念是计算一次资源,然后从缓存中将其提供给所有客户端。
在这里插入图片描述
专用的服务器端资源缓存解决方案: Memcached,Varnish,Squid、Redis、Hazelcast。

2.演示

使用 Apache APISIX 来演示服务器端缓存。APISIX 依赖于代理缓存插件进行缓存。不幸的是,目前 APISIX 不与任何第三方缓存解决方案集成。它提供两种选项:基于内存和基于磁盘。

一般来说,前者速度更快,但内存昂贵,而后者速度较慢,但​​磁盘存储便宜。然而,在 OpenResty 中,由于 LuaJIT 处理内存的方式,磁盘选项可能更快。您可能应该从磁盘开始,如果速度不够快,请挂载/dev/shm。

2.1.创建新路由

apisix.yaml配置:

routes:- uri: /cacheupstream_id: 1plugins:proxy-rewrite:regex_uri: ["/cache(.*)", "/$1"]proxy-cache: ~

请注意,默认缓存键是主机和请求 URI,其中包括查询参数。
当然也可以通过修改路由配置绕过缓存,配置如下:

routes:- uri: /cache*upstream_id: 1proxy-cache:cache_bypass: ["$arg_bypass"]   
curl -v localhost:9080/cache?bypass=please

2.2.默认proxy-cache配置

使用默认的基于磁盘的配置。
config-default.yaml配置:

  proxy_cache:                      # Proxy Caching configurationcache_ttl: 10s                  # The default caching time in disk if the upstream does not specify the cache timezones:                          # The parameters of a cache- name: disk_cache_one        # The name of the cache, administrator can specify# which cache to use by name in the admin api (disk|memory)memory_size: 50m            # The size of shared memory, it's used to store the cache index for# disk strategy, store cache content for memory strategy (disk|memory)disk_size: 1G               # The size of disk, it's used to store the cache data (disk)disk_path: /tmp/disk_cache_one  # The path to store the cache data (disk)cache_levels: 1:2           # The hierarchy levels of a cache (disk)- name: memory_cachememory_size: 50m

启动对应的应用,即可进行后续的测试工作。

2.3.测试

2.3.1.测试命令

curl -v localhost:9080/cache
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 147
< Connection: keep-alive
< Date: Thu, 16 May 2024 06:35:00 GMT
< Last-Modified: Thu, 16 May 2024 07:41:00 GMT
< ETag: "637e271f-93"
< Server: APISIX/3.0.0
< Apisix-Cache-Status: MISS                      
< Accept-Ranges: bytes

2.3.2.MISS

.
.
.
Apisix-Cache-Status: MISS 
.
.
.

2.3.3.HIT

如果我们curl再次在默认缓存过期时间(300 秒)之前,响应来自缓存

.
.
.
Apisix-Cache-Status: HIT
.
.
.

2.3.4.EXPIRED

.
.
.
Apisix-Cache-Status: EXPIRED
.
.
.

2.3.5.清除整个缓存

请注意,我们可以使用自定义 PURGE HTTP 方法显式清除整个缓存:

curl localhost:9080/cache -X PURGE

相关文章:

服务端Web资源缓存

1.前言 虽然客户端缓存效果很好&#xff0c;但它有一个核心问题&#xff1a;要在本地提供资源&#xff0c;必须先将其存储在缓存中。因此&#xff0c;每个客户端都需要其缓存的资源。如果请求的资源需要大量计算&#xff0c;则无法扩展。服务器端缓存背后的理念是计算一次资源…...

STM32-09-IWDG

文章目录 STM32 IWDG1. IWDG2. IWDG框图3. IWDG寄存器4. IWDG寄存器操作步骤5. IWDG溢出时间计算6. IWDG配置步骤7. 代码实现 STM32 IWDG 1. IWDG IWDG Independent watchdog&#xff0c;即独立看门狗&#xff0c;本质上是一个定时器&#xff0c;这个定时器有一个输出端&#…...

Android手动下载Gradle的使用方法

导入新项目通常会自动下载gradle版本&#xff0c;这种方式很慢而且经常下载失败&#xff0c;按照提示手动下载的gradle应该放在那里&#xff0c;如何使用&#xff0c;本篇文章为你提供一种亲测有效的方法&#xff1a; 在Android Studio打开Setting搜索Gradle找到Gradle的存放目…...

2024彩虹医械维修培训邀请

INVITATION 2024年5月20日 时间/TIME 地点/SITE &#xff08;西安、成都&#xff09; 随着我国医疗水平的提升&#xff0c;为适应现代医疗的发展步伐&#xff0c;提升医疗服务水平&#xff0c;各个医院在当下都开始重视医疗器械的维修。在医械行业&#xff0c;由于医疗器械…...

车辆超龄无法注册滴滴司机怎么办理账号

车辆超龄无法注册滴滴司机&#xff0c;别担心这个视频教你如何解决&#xff0c;滴滴司机注册过程中 车辆年限是一个常见的限制条件&#xff0c;如果您的车辆超过了8年&#xff0c;那么注册滴滴可能会遇到困难&#xff0c;但是不要因此而放弃成为滴滴司机的机会&#xff0c;《 …...

MATLAB车辆动力学建模 ——《控制系统现代开发技术》

引言 在上这门课之前&#xff0c;我已经用过CasADi 去做过最优化的相关实践&#xff0c;其中每一步迭代主要就是由&#xff1a;对象系统优化求解两部分组成的。这里我们重点介绍 “对象系统”如何去描述 &#xff0c;因为它是每一步迭代中重要的一环——“优化求解”会获得控制…...

复杂json解析(其中有一个key的value是json格式的字符串)

app上报的参数如下: {"clientId": "8517895440514039afcf6d3e5d7832ae","dua": "SNDOCKCJPH90_GA&VN900042418&BN0&VCXiaomi&MOM2012K11AC&RL1080_2239&CHIDunknown_unknown&LCID&RV&OSAndroid13&…...

线程池的一些问题

核心线程数1.最大线程5.队列5.存活时间10s 1.场景一 如果核心线程数.被一直占用得不到释放.新进来1个任务.会怎么样?答: 会在队列中中死等. 只要进来的任务.不超过队列的长度,就会一直挡在队列中死等 package com.lin;import java.util.concurrent.Executors; import java.u…...

企业或者个体户为什么会经营异常?

在复杂多变的市场经济环境中&#xff0c;无论是企业还是个体工商户&#xff0c;都可能遭遇经营异常的情况。及时识别这些预警信号并采取有效措施&#xff0c;对于避免潜在风险、保持健康发展至关重要。本文将深入探讨企业与个体户常见的经营异常类型、识别方法以及应对策略&…...

ROS从入门到精通4-3:制作Docker镜像文件Dockerfile

目录 0 专栏介绍1 为什么需要Dockerfile&#xff1f;2 Dockerfile书写原则3 Dockerfile常用指令3.1 FROM3.2 MAINTAINER3.3 RUN3.4 ADD3.5 COPY3.6 CMD3.7 ENV3.8 EXPOSE3.9 WORKDIR3.10 ARG 4 Dockerfile构建ROS工程实例 0 专栏介绍 本专栏旨在通过对ROS的系统学习&#xff0…...

【CV】计算机视觉是什么?

计算机视觉是一门研究如何使机器“看”的学科&#xff0c;旨在实现从图像或视频中获取信息的技术和方法。它涵盖了图像处理、模式识别、机器学习等多个领域&#xff0c;是人工智能领域的重要分支之一。以下是计算机视觉的一般概要介绍&#xff1a; 概要介绍&#xff1a; 图像…...

如何在Vue中实现鼠标悬浮展示与隐藏弹窗的功能

如果你需要鼠标在元素和弹窗上时保持弹窗显示&#xff0c;而鼠标离开这两者时隐藏弹窗&#xff0c;你可以使用一个稍微复杂的逻辑来处理鼠标的进入和离开事件。 这通常涉及到延时关闭弹窗&#xff0c;以便给用户足够的时间从元素移动到弹窗上&#xff0c;而不触发弹窗关闭。以…...

03 Linux编程-进程

1、进程的相关概念 1.1 程序与进程 程序是静态的概念&#xff0c;进程是程序的一次运行活动。 1.2 查看系统中有哪些进程 ps #只显示一小部分进程 ps -aux #会打印当前所有进程 ps -aux|grep init #使用grep筛选出只含有init的进程top #运行显示的进程有点类似windows…...

Hbuild-X运行ios基座app

一、说明 ios真机第一次运行的时候需要下载插件&#xff0c;这个都是自动监测&#xff0c;自动下载的&#xff0c;不用多说。ios真机运行是需要签名的&#xff0c;不然就会报以下错误。如何制作免费的签名证书呢&#xff0c;需要借助爱思助手来完成。 二、安装爱思助手 &…...

Node.js基础:从入门到实战

初识 Node.js 与内置模块 &#xff08;初识&#xff09; 1、知道什么是node.js 2、知道node.js可以做什么 3、node.js 中js的组成部分 &#xff08;内置模块&#xff09; 4、用 fs 模块读写操作文件 5、使用 path 模块处理路径 6、使用http 模块写一个基本的web服务器 初识 N…...

考研408笔记总结~

目录 一.数据结构 二.计算机组成原理 三.操作系统 四.计算机网络 私以为边看视频&#xff0c;边做笔记会更专注些&#xff0c;大家需要自取。欢迎大家和我一起探讨考研的问题&#xff0c;包括不仅限于专业课&#xff0c;数学&#xff0c;英语等等......&#xff0c;想说什么…...

使用在线工具等方式下载推特视频

使用在线工具等方式下载推特视频 使用在线工具 Visit a Twitter video downloader website: Websites like twdown.net, twittervideodownloader.com, and savevideo.me offer services to download Twitter videos.Paste the Twitter video URL into the designated input bo…...

性能优化:几方面考虑

我们可以继续再考虑下关于性能优化&#xff0c;我们还能从哪些方面着手呢&#xff1f; 1. 代码层面&#xff1a; 使用更高效的数据结构和算法。使用缓存避免多次数据库交互减少不必要的计算和内存分配。利用并行和异步编程提高性能。使用性能分析工具定位和优化瓶颈。 2. We…...

学习大数据:论学习Spark的重要性

随着科技的不断发展&#xff0c;大数据已经成为了当今社会的热门话题。大数据技术的出现&#xff0c;为我们提供了处理海量数据的新方法&#xff0c;使得我们能够从这些数据中挖掘出有价值的信息。在众多的大数据处理框架中&#xff0c;Apache Spark无疑是最为出色的一种。本文…...

学习java第七十一天

DI&#xff1a;依赖注入 依赖注入是spring容器中创建对象时给其设置依赖对象的方式&#xff0c;比如给spring一个清单&#xff0c;清单中列出了需要创建B对象以及其他的一些对象&#xff08;可能包含了B类型中需要依赖对象&#xff09;&#xff0c;此时spring在创建B对象的时候…...

3大核心功能突破JSON可视化难题:vue-json-pretty革新前端数据展示体验

3大核心功能突破JSON可视化难题&#xff1a;vue-json-pretty革新前端数据展示体验 【免费下载链接】vue-json-pretty A JSON tree view component that is easy to use and also supports data selection. 项目地址: https://gitcode.com/gh_mirrors/vu/vue-json-pretty …...

Vue3 + xterm.js 4.x + WebSocket 打造现代化Web终端实战指南

1. 为什么选择Vue3 xterm.js 4.x WebSocket组合&#xff1f; 在构建现代化Web终端时&#xff0c;技术选型直接影响开发效率和最终用户体验。Vue3提供了响应式编程范式和组件化开发优势&#xff0c;xterm.js 4.x是最新版本的浏览器终端模拟器&#xff0c;而WebSocket则实现了…...

MOVA割草机器人:开启自主决策新时代

随着AI感知技术在户外场景加速落地&#xff0c;MOVA率先推出AI双目视觉割草机器人ViAX系列&#xff0c;实现多传感器融合&#xff0c;让割草机迈入“自主决策时代”&#xff0c;全球销量快速增长。技术跃迁&#xff1a;从自动到自主 AI感知技术向户外场景渗透&#xff0c;割草机…...

自动驾驶车辆横向轨迹跟踪:基于NN与ANFIS优化MPC的探索

轨迹跟踪算法-基于神经网络NN或自适应神经模糊系统ANFIS优化模型预测控制MPC 的自动驾驶车辆横向轨迹跟踪 包含&#xff1a; 1.参考文献&#xff1b; 2.基于神经网络NN的自适应参数&#xff08;Np、Nc、Q、R 等&#xff09;的离散 MPC对比模型和代码&#xff1b; 3.基于自适应神…...

wordpress数据迁移---没有验证

迁移 WordPress 完整数据&#xff08;文章、页面、媒体、主题、插件、设置、评论、用户&#xff09;&#xff0c;核心是 备份旧站文件 数据库 → 新服务器配置环境 → 上传文件 导入数据库 → 修改配置 替换域名 / URL → 测试。下面分 插件一键迁移&#xff08;新手推荐&am…...

利用NSGA-III算法优化随机森林模型超参数的实践与可视化展示:从理论到实现的全过程解析

利用NSGA-III算法优化机器学习模型 通过Optuna库实现机器学习模型超参数的优化与可视化&#xff0c;通过精心设计的目标函数&#xff0c;将搜索多个超参数空间&#xff0c;最终确定使模型性能最优的参数组合 为了更直观地展示调参过程&#xff0c;最后利用3D曲面图对调参效果进…...

工业现场直通车:用C#和雷赛DMC3000库,从零搭建一个真实的运动控制上位机

工业现场直通车&#xff1a;用C#和雷赛DMC3000库构建高可靠运动控制上位机 在工业自动化领域&#xff0c;运动控制系统的稳定性和实时性直接决定了生产效率和产品质量。许多开发者从教学Demo过渡到实际工业应用时&#xff0c;常常面临理论与实践的断层——教材中的理想化代码无…...

基于CubeMX与HAL库:STM32F302串口重定向Printf的工程化实践

1. 为什么需要串口重定向Printf 在嵌入式开发中&#xff0c;调试信息输出是排查问题的生命线。想象一下你正在调试一个复杂的传感器数据采集系统&#xff0c;突然发现数据异常&#xff0c;这时候如果能像在PC上编程一样直接printf("当前温度值&#xff1a;%f", temp…...

实战指南:基于快马平台快速开发并部署班级宠物园应用官方下载门户

最近学校想推广一个班级宠物园的教育应用&#xff0c;需要快速搭建一个官方下载页面。作为技术负责人&#xff0c;我尝试用InsCode(快马)平台来快速实现这个需求&#xff0c;整个过程比想象中顺利很多。 项目规划与结构设计 首先明确页面需要包含的几个核心模块&#xff1a;顶部…...

Multisim新手必看:用差分放大电路课设,手把手教你搞定仿真与波形分析

Multisim新手必看&#xff1a;用差分放大电路课设&#xff0c;手把手教你搞定仿真与波形分析 第一次打开Multisim时&#xff0c;满屏的元器件和复杂的参数设置确实容易让人望而生畏。记得我大三做模电课设时&#xff0c;光是找齐差分放大电路需要的元件就花了半小时&#xff0c…...