Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 如何使用github s3同步操作将缓存控制设置为max age=0_Vue.js_Amazon S3_Continuous Deployment_Cache Control_Github Actions - Fatal编程技术网

Vue.js 如何使用github s3同步操作将缓存控制设置为max age=0

Vue.js 如何使用github s3同步操作将缓存控制设置为max age=0,vue.js,amazon-s3,continuous-deployment,cache-control,github-actions,Vue.js,Amazon S3,Continuous Deployment,Cache Control,Github Actions,每次合并到master时,我都会将vue应用程序上载到我的s3存储桶中。我的问题是缓存的失效不能完全工作。我的下一步是在每次推送时将元数据添加到对象index.html。为此,我想问一下如何将其添加到github操作jakejarvis/s3同步操作() 或者我必须使用另一个github操作来实现这一点 目前我的工作流程如下所示: name: Build on: push: branches: [master] build: runs-on: ubuntu-lates

每次合并到master时,我都会将vue应用程序上载到我的s3存储桶中。我的问题是缓存的失效不能完全工作。我的下一步是在每次推送时将元数据添加到对象
index.html
。为此,我想问一下如何将其添加到github操作
jakejarvis/s3同步操作
()

或者我必须使用另一个github操作来实现这一点

目前我的工作流程如下所示:

name: Build

on:
  push:
    branches: [master]

  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Use Node.js 12.x
        uses: actions/setup-node@v1
        with:
          node-version: '12.x'

      - name: npm install
        run: |
          npm ci
      - name: build
        run: |
          npm run build

      - name: Deploy to S3
        uses: jakejarvis/s3-sync-action@master
        with:
          args: --acl public-read --delete
        env:
          AWS_S3_BUCKET: ${{ secrets.AWS_STAGING_BUCKET_NAME }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_REGION: ${{ secrets.AWS_REGION }}
          SOURCE_DIR: 'dist'

      - name: Invalidate cloudfront
        uses: muratiger/invalidate-cloudfront-and-wait-for-completion-action@master
        env:
          DISTRIBUTION_ID: ${{ secrets.AWS_STAGING_DISTRIBUTION_ID }}
          PATHS: '/*'
          AWS_REGION: ${{ secrets.AWS_REGION }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

我要寻找的结果是
index.html
在每次部署后都有另一个元数据
缓存控件:max age=0
。目前,我正在s3管理控制台中手动添加它,这对我来说不是一个好的解决方案。因为元数据在每次部署之后都会消失

我找到了关于如何使用aws cli的答案,但我不知道是否可以在我的操作中添加该选项

aws s3 cp s3://[mybucket]/index.html s3://[mybucket]/index.html --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=0,public
PS:我知道我需要在您的示例中编写测试:

    with:
      args: --acl public-read --delete
args
生效,因为它按原样传递给,其末尾有
$*

sh -c "aws s3 sync ${SOURCE_DIR:-.} s3://${AWS_S3_BUCKET}/${DEST_DIR} \
              --profile s3-sync-action \
              --no-progress \
              ${ENDPOINT_APPEND} $*"
如果您还想设置
--缓存控制最大年龄=0,public
,然后将其添加到
args

    with:
      args: --acl public-read --delete --cache-control max-age=0,public

谢谢你的回复。如果在这种情况下理解正确,所有文件都将获得
缓存控制max age=0
或?问题是,我只想让
index.html
拥有那些元标记。是的,这将为所有文件设置它。我想您需要第二次调用才能对不同的文件使用单独的
--缓存控制。谢谢您的帮助!那么,你是说我需要分叉操作并添加另一个脚本?