Caching 如何开始使用web缓存、CDN和代理服务器?
我是一个新手程序员,正在创建一个我(自然)希望能够创造大量流量的初创公司。我正在AmazonEC2上的dotcloud上托管我的django项目。我有一些流媒体(Http,而不是rmtp),所以dotcloud的家伙推荐我使用CDN。我还使用AmazonS3进行存储,因此决定使用AmazonCloudFront作为我的CDN 我需要将注意力转向缓存的时候到了,我迷失了方向,感到困惑。我对这个概念完全陌生。我的全部知识来源于我刚刚读过的一篇教程()和一个令人困惑的周末咨询谷歌。最麻烦的是,我甚至不知道我需要为我的网站做些什么Caching 如何开始使用web缓存、CDN和代理服务器?,caching,cdn,squid,amazon-cloudfront,proxy-server,Caching,Cdn,Squid,Amazon Cloudfront,Proxy Server,我是一个新手程序员,正在创建一个我(自然)希望能够创造大量流量的初创公司。我正在AmazonEC2上的dotcloud上托管我的django项目。我有一些流媒体(Http,而不是rmtp),所以dotcloud的家伙推荐我使用CDN。我还使用AmazonS3进行存储,因此决定使用AmazonCloudFront作为我的CDN 我需要将注意力转向缓存的时候到了,我迷失了方向,感到困惑。我对这个概念完全陌生。我的全部知识来源于我刚刚读过的一篇教程()和一个令人困惑的周末咨询谷歌。最麻烦的是,我甚至不
我不确定我问的问题是否正确。只是觉得很失落。我现在已经建立了95%的整个网站,并认为我只是熨烫出的细节,但缓存似乎是另一个主要的任务。任何指导/建议/鼓励都将不胜感激 好的,那么让我们从缓存开始 缓存是指在临时的基础上存储一些东西,这样您就不必每次都执行更昂贵的操作来检索它 HTTP缓存是关于保存到服务器的往返,如果您只使用默认行为,浏览器将要求服务器“如果您有更新的版本,请向我发送此资源的副本” 如果您将expires头设置为未来时间,那么浏览器不会问这个问题,因为它知道它可以使用它所拥有的资源的副本 此级别的缓存可以改善最终用户体验并节省带宽 根据您的简要描述,HTTP缓存可以帮助处理较小的静态文件(请阅读bookofspeed.com的ch3) DB caching as memcached(和redis)用于减少数据库的负载(例如,通过保存操作的结果,然后从缓存中为其提供服务,而不是重复数据库操作) 在您的情况下,您将基于请求参数在数据检索层进行缓存(并可能确保不会缓存对客户端的HTTP响应) CDN与代理服务器 这些都是真正不同的野兽——CDN是为了让内容与访问者保持距离,从而减少延迟——如果你提供的是大文件,它也会将它们放在为其而优化的网络上,而不是放在你的服务器上,但这样做要付出一定的代价。一些CDN(例如cloud front)具有类似代理的行为,如果没有访问者想要的文件,它们会返回到您的原始服务器 代理服务器实际上是位于您的服务器和最终访问者之间的服务器-它们可能是您的服务器场(反向代理)ISP网络或访问者网络的一部分 反向代理实质上是从您的服务器上卸载与最终访问者的通信工作,例如,如果他们的连接速度慢,他们将占用生成页面的服务器更长时间。反向代理也可以位于多个服务器的前面—所有服务器都在做相同的事情或不同的事情,并且代理向外部世界显示一个地址。Squid是您可能使用的代理之一,但Varnish也非常流行 普通代理只是作为通过它们访问的访问者的缓存。例如,一家公司可能在其互联网网关上有一个缓存代理服务器,以便第一个访问外部站点的人可以检索文件,随后的访问者可以从代理中获取文件-他们可以获得更快的体验,公司可以减少他们的带宽消费 我猜你目前没有一个高流量的网站,所以你的挑战是了解在哪里花费你的精力,即什么时候需要优化 我的第一个建议是加入一些真正的用户监控(RUM),即使它是使用Boomerang.js或Pion构建自己的。还可以查看诸如Cacti/Munin/CollectD之类的监控工具,以便了解服务器上的负载
了解您的用户体验是确定哪些方面需要优化的关键。您就是最佳人选!!感谢您的周到、简单的解释。正是这些答案给了我信心,让我不断建立!在接下来的几天里,我将在我的项目上解决一些未解决的问题,然后我将把注意力转向性能/缓存。我绝对会接受你的提议。再次感谢你!