发布信息

优化网站性能:深入探讨浏览器缓存的作用与实践案例

作者:软荐小编      2025-02-12 15:01:48     149

前言

如今,缓存已成为优化网站性能的主要工具。良好的缓存使用不仅可以提高网站性能并改善用户体验,还可以节省成本(添加缓存服务器可以节省几台计算机);你们使用哪种缓存方法?让我们在这里与您的朋友一起评论。

文本

缓存的作用实际上非常清楚,如下所示:

1。浏览器缓存1.1简短说明

通过控制响应标头信息,浏览器告诉浏览器在本地缓存相应的数据。在指定的时间范围内,它可以直接从本地缓存中检索,但是浏览器无法选择转到缓存。

缓存服务有哪些_软件缓存服务器不可用_缓存服务器软件

1.2案例演示

本文仍在使用WebAPI项目进行演示,但通过不同的API来区分不同的情况。

要创建一个项目,请在默认的WeatherForecastController中添加操作方法,如下:

缓存服务有哪些_缓存服务器软件_软件缓存服务器不可用

目前,尚无缓存处理,因此,只要您访问它,接口就会被调用以获取最新数据。

在接口方法上,您只需要添加ResponseCache功能即可实现浏览器缓存,如下所示:

缓存服务有哪些_软件缓存服务器不可用_缓存服务器软件

这将启用客户端缓存。一些朋友可以单击浏览器刷新和F5进行测试。目前,没有看到缓存效果。实际上,此时浏览器已随附新请求,不会转到缓存以检索它,但实际上,请求获得的数据已被缓存。

那么如何测试呢?每次打开多个浏览器标签或使用Swagger如下:

首次访问:

缓存服务有哪些_缓存服务器软件_软件缓存服务器不可用

每次打开一个新选项卡并访问接口:

缓存服务器软件_软件缓存服务器不可用_缓存服务有哪些

除了根据数据没有更改的事实确定数据缓存外,它还可以确定是否通过请求从本地缓存中检索数据,如下所示:

缓存服务有哪些_缓存服务器软件_软件缓存服务器不可用

Swagger演示,我专门分享了有关如何整合Swagger的专门(与我了解Swagger的.Netcore的Swagger不再担心前端和后端和接口自定义):

软件缓存服务器不可用_缓存服务有哪些_缓存服务器软件

浏览器缓存的原理实际上是在响应标头中添加缓存控制(ResponseCache方法是以操作过滤器的形式设置响应标头),告诉浏览器到缓存数据,可以从缓存中检索在指定的时间范围内。我们还可以手动设置响应标头信息以达到相同的效果,如下所示:

缓存服务器软件_软件缓存服务器不可用_缓存服务有哪些

尽管数据已缓存,但浏览器也可以选择不从缓存中检索它,如下所示:

缓存服务器软件_软件缓存服务器不可用_缓存服务有哪些

2。服务器缓存2.1简短说明

浏览器高速缓存仅在一台计算机上保存在不同位置的数据。如果您打开不同的浏览器或在不同的计算机上访问它们,它仍然无法具有缓存效果,因此绝对是制作服务器缓存的好选择。

也就是说,数据被缓存到站点服务器。当请求到达时,如果命中缓存,则可以直接检索并返回,而无需调用相应的背景API。

软件缓存服务器不可用_缓存服务有哪些_缓存服务器软件

2.2案例

实际上,这只是基于原始浏览器缓存添加了中间件处理,如下所示:

代码如下:

软件缓存服务器不可用_缓存服务有哪些_缓存服务器软件

跑步效果:

缓存服务有哪些_软件缓存服务器不可用_缓存服务器软件

由于不同浏览器保存的数据是不同的,如果仅是本地缓存,则两个浏览器的数据将以不同的方式返回。另外,在第一个浏览器访问之后,时间范围内其他浏览器获得的结果相同,将不会调用背景接口。

这种服务器端缓存的某些情况无效,例如:请求方法不是由get或head缓存,返回状态代码未由200个缓存缓存服务器软件,请求标题包含授权等,所以这是很少使用的缓存操作。

3。应用程序内存缓存3.1简短说明

对于上面提到的浏览器缓存和服务器缓存,如果友好用户访问它,它将没有问题,并且可以产生一定的效果;但是,如果某人想做出错误的决定,并且没有设置相应的请求标题访问API(禁用缓存),则最终将对应用程序服务器和数据库服务器构成压力。因此,需要一种可以主动控制的缓存方法。后端程序是启动的对象,并在后端程序中写下缓存逻辑,因此缓存策略由我们自己控制。

尽管每个请求将输入应用程序,但将首先从缓存中检索数据。如果击中缓存,则将不再执行数据库访问,并且将直接返回缓存的数据。

缓存服务有哪些_缓存服务器软件_软件缓存服务器不可用

3.2案例

实际上,内存缓存已封装在框架中。您可以通过注册相关服务来使用它,如下所示:

缓存服务有哪些_缓存服务器软件_软件缓存服务器不可用

注册完成后,您只需要注入它即可使用它。这是一种演示的动作方法:

软件缓存服务器不可用_缓存服务器软件_缓存服务有哪些

效果将不采取。在20秒内,在单个程序部署中,无论您如何访问它,都将是相同的结果。如果您想进一步了解MemoryCache的使用,可以查看本文“我是因为MemoryCache开了个玩笑”。

4。分布式缓存4.1简短说明

尽管内存缓存可以解决浏览器和服务器缓存的缺点,但仅适用于单个部署程序。对于需要分布式部署的程序,无法共享程序内存之间的缓存数据,并且缓存效果绝对不会。不出所料,使用相应的中间件(例如memcache,redis等)出来分布式缓存,并且REDIS已成为缓存的首选。

请求的逻辑类似于内存缓存的逻辑缓存服务器软件,只是分布式缓存将使用第三方中间件进行数据存储,以确保分布式部署的部署程序共享一组缓存。

软件缓存服务器不可用_缓存服务器软件_缓存服务有哪些

4.2案例

在这里,我们仍在使用最受欢迎的Redis作为演示,因此我们需要提前安装Redis。对于Redis系列的文章,朋友可以阅读此“为我学习Redis”。

该框架还提供了一个接口iDistributedCache,该接口均匀地操作分布式缓存,并且用法基本上与上面的内存缓存相同。

REDIS在这里使用,因此您需要安装相应的Nuget软件包

Microsoft.extensions.caching.stackexchangered,然后注册相关服务,您可以使用它,如下:

缓存服务器软件_软件缓存服务器不可用_缓存服务有哪些

注册完成后,您只需要注入它即可使用它。这是一种演示的动作方法:

软件缓存服务器不可用_缓存服务器软件_缓存服务有哪些

访问相应的接口,在设定的时间范围内从REDIS读取的数据是一致的,并且将在其到期后清除,并且该程序将设置一个新值,如下:

软件缓存服务器不可用_缓存服务有哪些_缓存服务器软件

我会说很多关于缓存暂时使用的用法,一些朋友根据业务情况自己实施了它。

实例的源代码:

总结

缓存的主要目的是提高数据访问效率并减轻对应用和数据库的压力,但还将带来一些问题,例如高速缓存,缓存分解,缓存雪崩和缓存数据与数据库不一致。将来我们将逐个谈论问题。

相关内容 查看全部