AWS缓存动态内容/完整HTML(Laravel)

时间:2019-02-16 19:38:09

标签: php laravel amazon-web-services amazon-cloudfront

我正在AWS上放置一个Laravel(PHP)应用程序,到目前为止一切都还不错。

但是我有一个新要求!

我们需要根据用户的地理位置将默认货币自动解析为用户可用的货币之一。我认为这是在负载均衡器前面设置Amazon Cloudfront的好时机,因为它(如果我理解正确)将传递地理位置标头(among other headers),以确保为用户提供适当的内容。很好,但是我的问题是关于缓存。我了解Laravel或PHP在AWS中的典型用法是:

Source: https://devops.com/using-laravel-and-aws-what-you-need-to-know/

来源:Using Laravel and AWS: What You Need to Know

那太好了,但是在该图中,它仅将s3静态资产放在了云前-这当然是有道理的,但是我想在负载均衡器之前使用它 来获取我的地理位置标头已通过。

但是我也不一定要有2个Cloudfront-一个用于应用程序,另一个用于s3存储桶。这似乎很昂贵且效率低下-尤其是在应用程序被Cloudfront缓存丢失的情况下。

例如,当我请求主页时,它说:

  

x缓存:Cloudfront中的小姐

我看到有几种选择,寻找最佳选择的指导。

  1. 使用两个云前端,一个用于s3(例如images.example.com),另一个用于负载均衡器之后的ec2(例如example.com),并尝试在负载均衡器之前配置云前端(例如,用于laravel应用程序) .com)来进行整页和HTML缓存。我怎么做?我不想只将Cloudfront用于地理定位,而又不想利用动态缓存。
  2. 使用两个Cloudfront且不进行动态缓存-因此大多数应用程序CDN不会被缓存,而我只是将其用于地理位置定位-这似乎是错误的,而且看来我应该为此使用其他服务-但预算有限。
  3. 使用一个cloudfront并删除s3存储桶,仅从ec2的公共目录中进行缓存-尽管该公用文件夹必须在负载均衡器目标组中的ec2之间进行复制,但此操作将无效。

因此理想情况下,它应该是1,然后是2,然后是3(这实际上是不可行的)。

我是否正在正确考虑?如何让Cloudfront缓存不是PHP生成的非静态资产的请求,这样我就不会浪费Cloudfront在地理定位上的全部潜力。

谢谢!

编辑:

我想我也可以在{strong> one AWS Cloudfront上使用multiple origins-但我仍然想知道更多动态缓存。

0 个答案:

没有答案