本质上,如果我将新文件上传(通过拖放)到S3,则我的网站在访问时应该是最新的,而不是作为以前的版本进行缓存。目前,该行为可能是不一致的。 iOS通常不会在刷新时更新,而Chrome和Firefox可能会在刷新时正确更新。理想的情况是,iOS,Android,Chrome,Safari,Firefox,Edge都应在下次访问或下次刷新时(如果网站已经打开)都进行更新。
我已经读了一段时间的有关缓存清除的信息,但是我没有遇到一个易于理解的解决方案来显示React的更新的S3静态网站。
据我了解,yarn build
已经自动生成新文件名:
{
"main.js": "static/js/main.72dbb977.js",
"main.js.map": "static/js/main.72dbb977.js.map",
"static/js/0.d70486e8.chunk.js": "static/js/0.d70486e8.chunk.js",
"static/js/0.d70486e8.chunk.js.map": "static/js/0.d70486e8.chunk.js.map"
}
由于名称是新的和不同的,因此应该加载新版本,并且缓存应该没有问题。但是事实并非如此。
我看到一些解决方案涉及create-react-app的默认registerServiceWorker。删除或注销它可能是解决方案,但是如果需要Service Worker怎么办?最好缓存页面和资产,除非仅当我上传更新时。
版本控制可能是一种替代方法,但是我想避免进行手动更新,而且我不确定100%如何通过React正常工作。