手机网站可以做公众号,朋友圈海报用什么网站做的,全屏响应式网站建设,找工作哪个网站好智联招聘1.前言
虽然客户端缓存效果很好#xff0c;但它有一个核心问题#xff1a;要在本地提供资源#xff0c;必须先将其存储在缓存中。因此#xff0c;每个客户端都需要其缓存的资源。如果请求的资源需要大量计算#xff0c;则无法扩展。服务器端缓存背后的理念是计算一次资源…1.前言
虽然客户端缓存效果很好但它有一个核心问题要在本地提供资源必须先将其存储在缓存中。因此每个客户端都需要其缓存的资源。如果请求的资源需要大量计算则无法扩展。服务器端缓存背后的理念是计算一次资源然后从缓存中将其提供给所有客户端。 专用的服务器端资源缓存解决方案 MemcachedVarnishSquid、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?bypassplease2.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, its used to store the cache index for# disk strategy, store cache content for memory strategy (disk|memory)disk_size: 1G # The size of disk, its 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/cacheHTTP/1.1 200 OKContent-Type: text/html; charsetutf-8Content-Length: 147Connection: keep-aliveDate: Thu, 16 May 2024 06:35:00 GMTLast-Modified: Thu, 16 May 2024 07:41:00 GMTETag: 637e271f-93Server: APISIX/3.0.0Apisix-Cache-Status: MISS Accept-Ranges: bytes2.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