当前位置: 首页 > 知识库问答 >
问题:

Amazon S3和Cloudfront缓存,如何清除缓存或同步其缓存

方德宇
2023-03-14

我有一个每10分钟运行一次的cron作业,并更新内容类型和x-amz-meta。但从昨天开始,似乎在cron作业运行之后,亚马逊并没有恢复所做的更改(刷新他的缓存)。

我甚至手动进行了更改,但没有更改...

上载视频时,它有一个应用程序/x-mp4内容类型,cron作业将其更改为视频/mp4。

虽然S3的内容类型正确,但cloudfront显示的是应用程序/x-mp4(旧的内容类型)。。。。

cron作业在过去6个月一直没有出现问题。

亚马逊缓存有什么问题?我如何同步缓存?

共有3个答案

濮君植
2023-03-14

这是一种手动方法,可通过AWS使CloudFront上所有文件的缓存无效

  1. 打开CloudFront分发列表,单击想要清除其缓存的所需分发ID(下面的屏幕截图中用红色圈出)
东门玺
2023-03-14

至于真正的代码

获取您的CloudFront分发id

aws云前列表-分发

使发行版中的所有文件无效,以便CloudFront获取新文件

aws云前端创建-无效-分发-id=S11A16G5KZMEQD-路径/

我实际的完整版本脚本是

#!/usr/bin/env bash

BUCKET=mysite.com
SOURCE_DIR=dist/

export AWS_ACCESS_KEY_ID=xxxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=xxxxxxxxx
export AWS_DEFAULT_REGION=eu-west-1


echo "Building production"
if npm run build:prod ; then
   echo "Build Successful"
else
  echo "exiting.."
  exit 1
fi


echo "Removing all files on bucket"
aws s3 rm s3://${BUCKET} --recursive


echo "Attempting to upload site .."
echo "Command:  aws s3  sync $SOURCE_DIR s3://$BUCKET/"
aws s3  sync ${SOURCE_DIR} s3://${BUCKET}/
echo "S3 Upload complete"

echo "Invalidating cloudfrond distribution to get fresh cache"
aws cloudfront create-invalidation --distribution-id=S11A16G5KZMEQD --paths / --profile=myawsprofile

echo "Deployment complete"  

http://docs.aws.amazon.com/cli/latest/reference/cloudfront/get-invalidation.html

http://docs.aws.amazon.com/cli/latest/reference/cloudfront/create-invalidation.html

孟浩然
2023-03-14

使用无效清除缓存,您可以放置要清除的文件的路径,或者简单地使用通配符清除所有内容。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html#invalidating-objects-api

这也可以使用API完成!http://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html

AWS PHP SDK现在有了这些方法,但如果您想使用更轻松的方法,请查看此库:http://www.subchild.com/2010/09/17/amazon-cloudfront-php-invalidator/

user3305600的解决方案不起作用,因为将其设置为零相当于使用源缓存标头。

 类似资料:
  • 我使用Drupal 7最新的开发版本。 我已经安装了清漆和过期模块并设置它们。它们工作得很好,但是我有一个关于从清漆中删除缓存的问题。 问题是如何只删除索引(主页)页面的清漆缓存,而不删除其他页面的缓存。我看了清漆日志,发现每次Drupal执行命令时,整个清漆缓存都被删除了 此命令由varnish模块或expire模块执行,它表示删除主页(索引)页的缓存。但正如我看到的,它正在删除varnish中

  • void clear_cache(string template [, string cache id [, string compile id [, int expire time]]]) This clears the cache for a specific template. If you have multiple caches for this template, you can cl

  • 本文向大家介绍CodeIgniter启用缓存和清除缓存的方法,包括了CodeIgniter启用缓存和清除缓存的方法的使用技巧和注意事项,需要的朋友参考一下 Codeigniter支持缓存技术,以达到最快的速度。尽管CI已经相当高效了,但是网页中的动态内容、主机的内存CPU和数据库读取速度等因素直接影响了网页的加载速度。依靠网页缓存,你的网页可以达到近乎静态网页的加载速度,因为他们将程序输出的结果保

  • 问题内容: 我使用nginx作为前端服务器,我修改了CSS文件,但是nginx仍在使用旧文件。 我试图重新启动nginx,但没有成功,我已经用Google搜索,但是找不到清除它的有效方法。 一些文章说我们只能删除缓存目录:,但是我的服务器上没有这样的目录。 我现在该怎么办? 问题答案: 我遇到了完全相同的问题-我在Virtualbox中运行了Nginx。我没有打开缓存。但是看起来像已经设置好了,这

  • 问题内容: 我在项目中经常使用AlamofireImage,并且使用 从我的CDN获取图像。我已经做了一些测试,但是如果我错了,请纠正我,这似乎会将下载的图像存储到缓存中。我的测试包括下载5mb的图片。第一次大约花了20秒,第二次是瞬间。 我想知道的是如何清除特定URL /图像的缓存并重新下载图像? 例如,我更新了用户个人资料照片。图像名称/ URL会完全相同,但是我知道图像会随着用户从库或相机中

  • 我正在尝试使用Android Studio,第一次启动它,需要45分钟来编译...如果我不退出应用程序,那也没关系--每次后续编译/运行应用程序大约需要45秒。 我试着检查了我的一些缓存:在我的主目录中有一个文件夹,它包含123 MB。 我的项目文件夹中还有文件夹...其中一个大小为200 MB。我不敢随便用核弹攻击他们两个。删除文件夹的哪些部分是安全的? 有没有更好的解释为什么我的Android