开发者社区> 问答> 正文

Web 缓存的陷阱 400 请求报错 

我们尝试过很多工具来提高性能,例如 Profilers,各种 web 服务器,APC,xcache,memcache,redis等等。但是没有哪个技术能像 Varnish 那样带来如此大的性能提高。我们使用 Varnish 来解决大大小小的问题。在绝大多数情况下,它能很好的工作,为我们节约了大量的金钱。但这不意味着它就没有问题。这篇文章写的就是使用 Varnish 这类技术的一些注意点。

性能问题

当你启用缓存的时候,请记住你并没有“解决”任何问题。页面装载变快是因为你跳过了复杂的页面渲染过程,但是假如你的缓存没有该页面,那么整个装载还是会一样缓慢。当你将有 session 的请求传到后端服务器的时候,响应就会变的很慢。所以,使用缓存来减少装载时间,但也必须解决底层的性能问题。

重写

我们使用了很多 URL 重写的技术。重写可以规范 URL 形式,没有人想要看到 wiki/index.php?title=Foo 这样的地址。不幸的是,URL 重写会让逻辑变的复杂,它会将请求的 URL 作为累加器。重写也让测试变的困难,因为它要建立在缓存服务器之上。

如果可以选择的话,请不要将重写构建于缓存服务器上,它非常难以调试,并且非常脆弱。尽可能的使用重定向,虽然会慢一点点。

复杂的逻辑

重写并不是唯一把事情变复杂的技术。通过 Varnish 你很容易创建复杂的逻辑。你可以对每一个请求设置不同的条件。当你这么做的时候,你需要问问你自己是不是真的有必要。你也许会发现在缓存中实现一些逻辑虽然更快速,但还是在应用中实现更为妥帖。请记住,缓存是很难调试的。你并不清楚你的逻辑在一个缓存周期中是否成立。

总结

我的建议是 Web 缓存很容易,但是请尽量保持简单。请尽量不要在缓存中存放业务逻辑。还有,请不要忽略程序的性能问题,缓存不能解决全部的问题。   原文链接OSChina.NET 编译

展开
收起
kun坤 2020-05-29 17:33:24 636 0
1 条回答
写回答
取消 提交回答
  • 其实就一个要说的。varnish能解决暂时的问题。但是真正的问题没有解决。 @虫虫 你们也开始在用varnish了?######varnish 确实好用,但也确实有一些头痛的问题,最要命的是会发生某些URL 卡住.然后就是放大后端的响应时间.######vanish 我现在就在用######重点就提了一个名字 ... =.=######ATS !!!######不知所云

    页面装载变快是因为你跳过了复杂的页面渲染过程

    是生成不是渲染######收藏了######没有价值的文章真心还是少发吧...######第一听到  Varnish这个名字######

    引用来自“mk2011”的答案

    varnish 确实好用,但也确实有一些头痛的问题,最要命的是会发生某些URL 卡住.然后就是放大后端的响应时间.
    比如大文件下载
    2020-05-29 17:33:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
用户态高速块缓存方案 立即下载
高性能Web架构之缓存体系 立即下载