我正在寻找有关实现在 Go HTML 模板中自动包含版本化文件名的帮助。例如,在我的模板中,我的头中有这样的东西:
<link rel="stylesheet" href="{{ .MyCssFile }}" />
样式表本身有一大块 MD5 哈希附加到来自名为 gulp-rev 的 gulp 脚本的名称
stylesheet-d861367de2.css
目的是确保浏览器获取新的更改,但也允许缓存。以下是 Django 中的示例实现,以获得更好的解释:
https://docs.djangoproject.com/en/1.9/ref/contrib/staticfiles/#manifeststaticfilesstorage
StaticFilesStorage 存储后端的子类,它通过将文件内容的 MD5 哈希附加到文件名来存储它处理的文件名。例如,文件 css/styles.css 也将保存为 css/styles.55e7cbb9ba48.css。
此存储的目的是继续提供旧文件,以防某些页面仍然引用这些文件,例如因为它们被您或第 3 方代理服务器缓存。此外,如果您想将远期的 Expires 标头应用于已部署的文件以加快后续页面访问的加载时间,这将非常有用。
现在我想知道如何最好地在 Go 中实现这一点?我打算从内置文件服务器提供文件。
我目前的想法是:
有一个循环来检查目录中的最新样式表文件。听起来很慢。
对通用命名的文件进行某种重定向/重写(如 file.css 是根据对 file-hash.css 的请求提供的)。
让 Go 自己管理资产命名,附加哈希或时间戳。
也许它用 nginx 或其他东西处理得更好?
慕运维8079593
慕丝7291255
相关分类