cod*_*321 2 python django google-cloud-storage google-cloud-platform
我有一个及时冻结的云存储文件,不会让步。到目前为止,我有:
重新收集了静态文件(Django)并进行了rsync更新
删除有问题的静态文件,重新收集静态文件并进行rsync更新
删除了云存储控制台中的文件并重新同步
删除整个存储桶,并创建另一个具有相同名称的存储桶,然后再次将所有85个静态文件同步到该存储桶
头几次,我更改了静态文件,收集了它们,并进行了同步,它立即起作用。现在我有这条线
var URL = "http://%/api/recipes/delete/&/".replace("%", API_BASE).replace("&", recipe_id);
Run Code Online (Sandbox Code Playgroud)
卡在时间上,冻结在这个桶里。在Django中,我的文件正确读取
var URL = "/api/recipes/delete/&/".replace("&", recipe_id);
Run Code Online (Sandbox Code Playgroud)
更改签入git。
此存储API根本没有更新,即使删除了文件,文件仍在提供中。删除整个存储桶后,文件仍在提供服务,这似乎是一个错误。该文件是:
http://storage.googleapis.com/homebrew-api-static-bucket/static/main/index.js
但是,如果我从Cloud Storage控制台查看文件,则会得到正确的文件。
因此,即使文件桶中的文件正确无误,但我的应用使用的文件在2个多小时后仍然过时
我以以下方式提供文件index.html:
<script src="{% static "main/index.js" %}" type='text/javascript'></script>
Run Code Online (Sandbox Code Playgroud)
在settings.py:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = 'http://storage.googleapis.com/homebrew-bucket/static/'
Run Code Online (Sandbox Code Playgroud)
即使删除和重新制作整个存储桶也不会改变任何东西,我还是没有主意。
GCS提供了强大的写入后读取一致性。如果您上传了对象的新版本,然后又将其下载回来,则将始终获得该对象的新版本。
但是,默认情况下,当获取公共可读对象时,GCS会以“ Cache-Control”标头响应,最多允许缓存1小时。Google本身,您的Web浏览器或您与Google之间的某些防火墙可能会根据该标头决定缓存对象。您可以通过再次获取对象并在请求的末尾添加一些虚假的URL参数,例如“?avoidTheCaches = 1”,来检查是否是问题所在。
您可以通过将对象的“ cacheControl”属性设置为“ private”或“ max-age = 0”之类的方法来防止这种情况的发生。您可以将此属性设置为上传的一部分。您还可以修改现有对象的属性,但是如果资源已被缓存,则必须等待一个小时才能看到新版本。
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |