减less美国用户与欧盟服务器之间的延迟

我在泡菜。 我曾以为我的服务器是在加拿大,但原来是在法国。 我现在没有时间进行服务器迁移(如果访问者是美国,最终目标为75%)。

使用pingdom的网站速度testing,当我从瑞典testing时,第一个字节的等待时间约为140ms。 当我从加利福尼亚州进行testing时,大概是680毫秒。 我需要尝试和减less这一点,因为谷歌说爬行网站速度很慢,总体而言,大多数访问者都来自美国,所以我需要改善他们的体验。

Cloudflare正在caching静态资产,所以虽然延迟也在css,js和images的600多个地区,但一旦Cloudflareselect了这些文件,它们就会下降。 我的重点是现在在PHP文件。

我无法使用nginx,因为我无法通过代理完成100%的htmlcaching。 但是,我可以使用redis来caching99%的HTML。 我已经升级到php7,Apache现在可以通过快速CGI进行工作。 我使网站尽可能快地使用沉重的内存caching和摆脱所有未使用的模块等。这个网站是相当迅速的testing从pingdom在加利福尼亚州花费2-3秒完全呈现一个没有击中的页面HTMLcaching。 但是,如果我能摆脱600毫秒延迟的一些,我会快速。

除了在欧盟和美国拥有服务器并使用负载平衡器外,我还能做些什么来加速美国用户的使用体验,摆脱一些困难?

我在法国服务器上使用Apache 2.4和php7(快速CGI)运行Centos 7。 该服务器是专用的16GB内存和4核心与8线程2.4GHz的至强。

你提到的响应时间过多。 我将首先validation在将networking从等式中移除时可以多快地产生响应。

尝试在服务器上运行一个命令来下载页面,看看需要多less时间。 如果你想要一个单一的资源,你可以使用wgetcurl轻松完成。 如果你想要的东西可以识别所有需要呈现一个页面,并下载他们的资源,你需要看看其他工具。

为了测量什么样的延迟,您尝试使用来自世界各地的单个ICMP回应请求到您的服务器,以查看networking单独添加了多less时间。 有很多网站可以为你做这样的testing。

即使内容不能被caching,在服务器之前放置一个代理也是有潜在的好处的。 代理可以位于用户附近,并且代理可以提前build立到后端服务器的https连接,使得用户只需要等待在跨大西洋链路上的单个往返,而不是在连接的情况下等待两个或更多个必须在用户开始加载页面时设置。

而且,当您在连接的每一端控制服务器时,您将能够更好地测量大西洋连接的往返,抖动和数据包丢失情况。 能够衡量它是能够改进它的第一步。

最后找出你的页面结构添加到下载所有资源的往返次数。 代理可以让你下载到每个资源一个往返,但是页面的结构决定可以并行下载多less个。 例如,如果页面引用了JavaScript文件,并且该脚本在运行时下载了一个图像,则至less需要三次往返,因为浏览器在下一个之前不能开始下载。