在 memcached 中使用 varnish 和缓存内容有什么区别?

在 memcached 中使用 varnish 和缓存内容有什么区别?

如果我们的Web应用程序使用memcached,我们是否需要部署varnish,或者如果我们使用varnish来缓存web内容,我们是否需要memcached。

有人可以推荐一些我们应该使用其中之一或两者都使用的场景吗?

答案1

HTTP 代理服务器是memcached解决不同问题并应用于软件堆栈不同层的不同技术。两者都有用。

位于应用程序前面的 HTTP 代理服务器可以响应其缓存中的请求,从而使应用程序不必处理某些请求负载。仅当您的应用程序输出可缓存的内容并且最终用户多次请求该内容时,这才有效。为了使内容可缓存,您的应用程序需要设置适当的 HTTP 标头,以使代理服务器(和浏览器)知道可缓存的内容以及可缓存的时间。

如果请求一路到达您的应用程序(它们错过了 HTTP 代理缓存或没有 HTTP 代理),您的应用程序必须计算它需要发回的内容。如果此计算成本高昂,但可以从以前的请求中缓存部分数据,那么memcached这是应用程序存储这些计算[部分]结果的好方法,以便以后可以重用它们。您的应用程序需要专门编写来执行此操作,并连接到memcached实例以获取和设置此数据。

答案2

Varnish 旨在服务网页文件,如 html、js、css、图像等。它拦截互联网客户端和后端应用程序服务器之间的 HTTP 流量。 Varnish 监听 http 端口 80 并使用 HTTP 协议。浏览器和后端应用程序都不需要知道 Varnish 的存在,一旦正确配置它就可以工作。

Memcached 是一种应用程序,通常用于缓存从数据库服务器传输到应用程序的数据,以减少对数据库的查询次数。此外,由于数据缓存在内存中,因此检索速度要快得多。而是控制从 Memcached 插入和检索数据的应用程序,换句话说,必须编写应用程序才能正确使用 Memcached。 Memcached 不支持 HTTP 协议。

相关内容