我已经在S3上构建并部署了React应用(简称为应用A),并为其启用了“静态网站托管”。该应用程序先前使用Node在EC2实例上运行。最近,团队中的某人在S3上部署了另一个React应用(B),那时我读到S3是轻松部署静态内容的不错选择,因此我想到了将应用A迁移到S3。但是,部署该应用程序后,我发现要获取登录页面花费了太多时间(10-15秒)。登录后,体验还不错,但是速度仍然很明显。在EC2实例上运行时不是这种情况。
请澄清一下,所有这些基于React的应用程序(包括应用程序A和B)都只能在公司的网络内使用,并且所有用户都仅来自美国地区。应用程序A从其他基于React的应用程序(应用程序B和C,都仅在S3上托管)和其他应用程序(在EC2实例上运行)获取图像(和其他数据)。
我了解了性能问题,并遇到了在将内部版本上载到S3时可以使用的content-encoding
和cache-control
参数。我使用GZIP压缩了CSS和JS文件,还添加了content-encoding
的元数据,但是,我看不到页面加载的任何显着差异。我离开了cache-control
参数(我将其设置为max-age=31536000
是因为应用A已哈希了文件名),因为添加此参数后,我得到的是空白页(不确定原因)登录到应用程序后。我还使用GTMetrix(附带快照)检查了网站性能。在此报告中,您会注意到它仍在显示可以改善压缩效果,但是,建议实际上是针对此应用A连接到的应用B的。我认为这对我来说是一个需要改进的地方。我还与开发人员进行了核对,他告诉我,尽管我在将其上传到S3时对其进行了压缩,但他并未在应用程序(应用程序A)内部内部使用过压缩。
我读过许多文章,其中人们将S3与CloudFront或其他CDN一起使用。我不确定是第一次解决部署问题的正确方法。在提议将S3作为其他环境(QA,UAT,PROD)的部署方法之前,我还必须考虑成本。
考虑到应用程序用户将仅在公司网络内 ,我有以下查询:
1)是否可以避免使用CloudFront / CDN方法,还是我可以解决此性能问题的唯一方法?
2)如果在S3上进行静态托管很好,那么是否可以对整个设置进行一些修改,以使从其他S3托管的React app C获取的图像不会通过Internet路由,从而节省了成本?
我刚刚检查了大多数图像所在的React app C的S3存储桶大小。到目前为止,存储桶的总大小约为200 MB,我可以看到的最大文件大小约为100 KB(大多数都在该范围内)。请让我知道是否需要更多数据来提出建议。