go - revel 框架中的缓存失效

标签 go revel

我正在寻找一种在版本更改时使缓存的静态内容无效的方法。最好使用提交 ID 使之无效。反正有没有在 revel 框架中做到这一点?

如果它是自动的,我会更喜欢,但如果它是我必须编辑的一个地方,我可以忍受每次更新它。

我目前的策略是更改静态内容路由的名称以包含版本,但这需要进行多项更改。在感觉不自然的地方,例如在路由文件中。

最佳答案

您可以通过配置变量和拦截方法手动完成。

资源版本.go

在您的 Controller 文件夹中创建此文件:

package controllers

import (
    "github.com/revel/revel"
)

// interceptor method, called before every request. 
// Sets a template variable to the resourceVersion read from app.conf
func SetVersion(c *revel.Controller) revel.Result {
    c.RenderArgs["resourceVersion"] = revel.Config.StringDefault("resourceVersion", "1")
    return nil
}

初始化.go

在 init() 方法中,附加这一行:

revel.InterceptMethod(controllers.SetVersion, revel.BEFORE)

模板

在你的模板中,你想要使用资源版本的地方:

<link rel="stylesheet" type="text/css" href="/public/css/style.css?{{.resourceVersion}}">

应用程序配置文件

最后,您将更新它的地方 - 在开发部分上方添加此行以应用于开发和生产,或者在每个部分都有不同的部分,无论适合什么。

resourceVersion=20150716

我猜你可以创建一个脚本作为构建和发布过程的一部分,它会自动编辑这个配置变量。

关于go - revel 框架中的缓存失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448099/

相关文章:

parallel-processing - 并行化多 channel 算法的推荐方法

amazon-web-services - 使用 s3 上传多个文件

go - Revel 和 golang 导入太物理?

Go:带有接口(interface)的结构的动态类型转换/断言(调用方法和使用结构公共(public))

http - 带有非本地主机的实时站点的 Go Revel 框架

oop - 如何在 Go 中实现一个抽象类?

pointers - 在 golang 中具有指向 0 值的指针的深度复制结构

api - GO单元测试结构化REST API项目

go - revel 框架中的相对路径