Heroku托管的angularjs应用程序,即使使用缓存控制,我也无法使浏览器缓存s3图像

问题描述 投票:1回答:1

i在尝试启用浏览器缓存s3图像时遇到问题。我在Heorku上部署了angularjs应用。我的应用使用存储在s3存储桶中的图像。因为它有很多图像,所以我希望浏览器请求文件,将其存储在缓存中,然后使用缓存,但是无论我做什么,我都无法使浏览器从缓存中请求文件。我看到它正在请求文件,然后重新加载页面,它再次获得相同的文件。

我尝试在index.html中设置以下标题:

  <meta http-equiv="Cache-Control" content="public, max-age=604800" />
  <meta http-equiv="Pragma" content="public, max-age=604800" />

但是图像仍未缓存。

这是我在Chrome的网络面板中看到的内容:

**General**
RequestURL: https://localhost-mercurio.s3.amazonaws.com/1584160111310-m3r-piriapolis-letras1.jpeg
Request Method: GET
Status Code: 200 OK
Remote Address: 52.217.41.172:443
Referrer Policy: no-referrer-when-downgrade

**Response headers**
Accept-Ranges: bytes
Cache-Control: public, max-age=31536000
Content-Length: 80901
Content-Type: application/octet-stream
Date: Sat, 14 Mar 2020 04:46:38 GMT
ETag: "c5f451ebcd689f3aacee4144e80b54bf"
Last-Modified: Sat, 14 Mar 2020 04:28:34 GMT
Server: AmazonS3
x-amz-id-2: h+iya1nhpaqv/YMuqmpmVWse1JTt6HqdFzYul7SzR9BQ5wN/EyrE70VqT19j1EnmCsJKpYUllvk=
x-amz-request-id: CCEC70B9DD70C757

**Request headers**
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,es;q=0.8,it;q=0.7
Cache-Control: no-cache
Connection: keep-alive
Host: localhost-mercurio.s3.amazonaws.com
Pragma: no-cache
Referer: http://localhost:3000/
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36

如您所见,响应标头具有Cache-Control: public, max-age=31536000,这是在s3中上传图片时设置的,因此我想通过s3为文件提供正确的标头。

请求标头是我看到的Cache-Control: no-cache,我认为这可能是未缓存这些图像的原因,但是我不确定并且不知道如何更改它,毕竟我阅读了所有文档之后,我才真正想到了缓存必须在s3对象上设置控件,仅此而已,是否有任何即时消息可以使这项工作有效?]

我的服务器是一个提供静态dist文件夹的简单expressjs,其余的发生在angularJS应用内部。

任何帮助,将不胜感激!这是超出我的范围的事情,发生了太多服务器问题,我觉得很难理解!

[如果有人问,它是angularJS而不是Angular,因为它是我在Angular处于beta版时就开始使用的,一旦我使它工作并且有一些客户发生了所有这些事情,而我再也没有迁移,但是我计划尽快这样做,我只需要这个工作更长一点!

更新:我尝试了不同的方法来设置Express中的标题,但是无论我做什么,我总是在浏览器中看到相同的标题。我还试图在HTML代码中设置标题,以为maaaaybe正在读取它们,并且nocache使图像缓存不起作用,但那里也没有运气。

可能是什么原因?这是s3问题,服务器问题,angularjs问题吗?我也没有找到方法来配置如何在angularjs中请求图像,我唯一的缓存控制是对发送到服务器的请求的控制,我用尽了所有尝试的选项,因为我不想我认为我需要花费更多的钱对于诸如cloudflare之类的问题,如果可以通过我们所有人已经拥有的思想来完成,那么任何帮助将非常感激!!!

angularjs express caching amazon-s3 cache-control
1个回答
0
投票

这也可能对某人有所帮助,但是我所做的所有工作都可以正常进行,默认情况下,当chrome dev工具打开时,勾选“禁用缓存”选项,因此在测试以查看是否正在缓存内容时,缓存标头可以,但不缓存对象。您必须取消选中该选项,重新加载页面,然后才可以看到对象被缓存。

© www.soinside.com 2019 - 2024. All rights reserved.