Performance 为动态网站使用CDN

Performance 为动态网站使用CDN,performance,caching,cdn,Performance,Caching,Cdn,我有一个网站论坛,用户在主页上互相交换照片和文字。主页上显示了20个最新的对象-无论是照片还是文字。第21个物体被推出视野之外。每5秒上传一张新照片。每秒发布一个新的文本字符串。在大约20秒内,一张出现在顶部的照片从底部消失了 我的问题是:如果我在组合中引入CDN,我会获得性能改进吗 既然内容在变化,我似乎不应该这么做。然而,当我从逻辑上考虑时,似乎我会从为我的照片引入CDN中获得性能改进。这是怎么做的。想象一张照片被张贴,出现在t=1的页面上,并一直保持到t=20。第一个访问页面的人(接近t=

我有一个网站论坛,用户在主页上互相交换照片和文字。主页上显示了20个最新的对象-无论是照片还是文字。第21个物体被推出视野之外。每5秒上传一张新照片。每秒发布一个新的文本字符串。在大约20秒内,一张出现在顶部的照片从底部消失了

我的问题是:如果我在组合中引入CDN,我会获得性能改进吗

既然内容在变化,我似乎不应该这么做。然而,当我从逻辑上考虑时,似乎我会从为我的照片引入CDN中获得性能改进。这是怎么做的。想象一张照片被张贴,出现在t=1的页面上,并一直保持到t=20。第一个访问页面的人(接近t=1)将允许将照片拉至边缘服务器。此后,任何访问照片的人都将从CDN接收照片;这将持续到t=20,之后照片消失。这是一个名副其实的性能提升


有谁能评论一下我的推理有什么缺陷和/或我没有考虑什么?另外,如果知道我可以为像我这样的网站做哪些其他性能优化,我也会很高兴。提前谢谢。

你说得对。只要有人在20秒内访问照片,图像就会被拉到边缘服务器。然后,在后续请求中,其他访问者将从最近的边缘服务器接收缓存响应

只要您使用CDN只提供静态资产,您的设置就不会有问题


此外,您可能需要研究支持HTTP/2的CDN。这将为您提供更好的性能。查看流行的CDN提供商之间的比较。

您做对了。只要有人在20秒内访问照片,图像就会被拉到边缘服务器。然后,在后续请求中,其他访问者将从最近的边缘服务器接收缓存响应

只要您使用CDN只提供静态资产,您的设置就不会有问题

此外,您可能需要研究支持HTTP/2的CDN。这将为您提供更好的性能。检查一下流行的CDN提供者之间的比较。

你需要考虑所有的服务器上的请求,其中包括主动态生成的HTML文档,还包括所有静态资产,如CSS文件、JavaScript文件、是的,图像文件(静态和用户上传内容)。HTML文档将引用其他几个资产,每个资产都需要单独下载,因此会导致服务器崩溃。为了便于讨论,假设每个访问者都有一个空的本地缓存,单页加载可能会导致,比如说,服务器的资源命中率约为50

可能服务器实际需要处理的唯一请求是动态生成的HTML文档,如果它是特定于用户的(因为他们已登录)所有其他49个资源请求对于所有访问者都是相同的,可以很容易地转移到CDN。这些请求只会[每个区域]命中您的服务器一次,然后被CDN缓存,很少再打扰您的服务器。您甚至可以让CDN缓存公共HTML文档,例如,对于未登录的用户,您可以让CDN缓存HTML文档约5秒钟,具体取决于您希望站点显示的最新程度;因此,CDN可以处理整个浏览会话,而不会影响您的服务器

如果你大约每秒有一个新的上传,这意味着每秒可能会有更多的被动访问者。如果您可以让CDN处理约99%的请求,那么您的服务器的实际命中率将显著降低。如果您对缓存内容、缓存时间以及特定的匿名和身份验证用户组合很在行,那么您可以轻松地将服务器负载减少一两个数量级。另一方面,您也相应地加快了访问者的页面加载时间

对于每个HTML文档和其他资产,请真正考虑是否可以缓存此文档,以及缓存时间:

  • 对于HTML文档,用户是否已登录?如果没有,并且没有其他特定的cookie跟踪或类似的事情发生,那么该资产就所有意图和目的而言都是静态和公共的,并且可以缓存。确定文档的最长期限,并让CDN缓存它。当你每秒获得1000次点击时,即使缓存一秒钟也会产生巨大的影响

  • 如果用户已登录,请将缓存pragma设置为
    private
    ,但仍让访问者的浏览器将其缓存几秒钟。这些标题必须由论坛软件在生成文档时决定

  • 对于所有其他不受访问限制的资产:让CDN将其缓存很长一段时间,您几乎可以忘记再也不必为这些特定文件提供服务了。可以为web服务器中的整个目录静态配置这些标头

您需要考虑所有服务器上的请求,这些请求包括主动态生成的HTML文档,还包括所有静态资产,如CSS文件、JavaScript文件、YES、图像文件(静态和用户上传内容)。HTML文档将引用其他几个资产,每个资产都需要单独下载,因此会导致服务器崩溃。为了便于讨论,假设每个访问者都有一个空的本地缓存,单页加载可能会导致,比如说,服务器的资源命中率约为50

可能服务器实际需要处理的唯一请求是动态生成的HTML文档,如果它是特定于用户的(因为他们已登录)所有其他49个资源请求对于所有