Optimization 为什么鱿鱼适合休息?

Optimization 为什么鱿鱼适合休息?,optimization,rest,caching,squid,Optimization,Rest,Caching,Squid,在这篇文章中,有人提出,如果您经常从数据库中获取随机实体,就使用Memcache,如果您使用REST体系结构,就使用Squid。请解释为什么(关于Squid)。Rest使用http动词来执行正确的操作,即GET始终是非破坏性的。URL的名称也是一致的。这意味着Squid中的http缓存可以在不依赖底层编程技术(ASP MVC、Rails、CouchDB等)的情况下用于提高性能。Memcache是一个分布式对象存储—您可以将对象放入和移出它。对于任何用途,它都是通用缓存 Squid是代理服务器和w

在这篇文章中,有人提出,如果您经常从数据库中获取随机实体,就使用Memcache,如果您使用REST体系结构,就使用Squid。请解释为什么(关于Squid)。

Rest使用http动词来执行正确的操作,即GET始终是非破坏性的。URL的名称也是一致的。这意味着Squid中的http缓存可以在不依赖底层编程技术(ASP MVC、Rails、CouchDB等)的情况下用于提高性能。

Memcache是一个分布式对象存储—您可以将对象放入和移出它。对于任何用途,它都是通用缓存

Squid是代理服务器和web缓存。如果一切都是通过URL(例如REST)完成的,那么Squid将免费完成这项工作


总之,memcache是通用的,Squid用于缓存URL的结果。

REST是关于http和资源的

squid可以用作Web服务器,因此它将从Web服务器获取负载。服务器端可以设置为指示缓存的时间窗口

这就是说,缓存主要在标准http头上完成,因此它比缓存db查询更接近rest样式的体系结构。

Squid(作为代理和缓存)可以有效地与rest端点一起使用。在REST中,资源(应该)使用ETAG/Last Modified头显式传输,以便于缓存

此外,REST中的许多操作(应该)是幂等的(重复而没有进一步的副作用):这对Squid来说是一个完美的情况。它可以单独执行这些操作,而不会影响应用程序服务器。

(这个答案是在最初的问题提出十年后得出的——但鉴于我在咨询的大型组织中遇到了这个问题,我认为在这里进行解释很有用。)

正如所看到的,他意识到如果(GET等)用于访问和修改资源,而不仅仅是将HTTP用于远程过程调用,那么其余的HTTP规范(如caching())就可以利用。这说明了这一点。这就是他设计的原因

作为HTTP缓存代理,该实现可以显著降低后端系统的负载,同时确保缓存的数据是最新的

该标准允许定义项目在重新验证之前可以缓存多长时间,以及如何进行有条件请求,因此只有新版本才会发送响应请求。所有这些客户端行为都已经在浏览器和主要语言(如Java和)中使用的HTTP客户端中实现

由于到目前为止,所有这些机制都已明确定义和实现,因此利用这些机制实际上只是使用这些组件的问题,其中大部分您可能已经在使用了(例如,在撰写本文时,Apache HC组件是SpringBoot附带的默认实现—只需将缓存库添加到构建中即可)

如果您要使用MemCache或MemCache来实现这一点,那么您只是在重新发明轮子,并且从那时起将不得不维护自定义代码。如果您不实现代码内的等效功能,您将使用过时的数据和低效的通信