Breeze元数据请求具有缓存半身像的URL

时间:2013-12-13 19:19:01

标签: caching asp.net-web-api breeze hottowel

我目前正在使用Breeze.js(版本1.4.1)以及HotTowel模板,一切都运行得非常好。

但是,我想知道是否有一种方法可以在发送的请求中包含breeze,以便使Metadata成为可配置的后缀,例如?v=1.0.0.1,其方式与我目前使用的方式类似{ {1}}在版本更改期间破坏本地缓存。

这将提供让用户在本地缓存元数据并避免对相同的未更改元数据的不必要请求的好处。甚至还有服务器端缓存,并尽可能避免元数据生成。

对于实际的WebApi缓存,我目前正在使用WebApi.OutputCache,以便与之相配。

2 个答案:

答案 0 :(得分:6)

好吧,我找到了一种方法,没有微风的任何特定支持,只有WebApi路由。

我基本上将控制器路由更改为以下内容:

GlobalConfiguration.Configuration.Routes.MapHttpRoute(
            name: "BreezeApi",
            routeTemplate: "breeze/{appVersion}/{controller}/{action}"
        );

然后在创建EntityManager时,我按如下方式执行:

var manager = new breeze.EntityManager('breeze/' + appVersion + '/data');

appVersion具有增量数字版本值。

这使您可以在以后为元数据操作配置缓存,例如:

[HttpGet]
[CacheOutput(ClientTimeSpan = CLIENT_DURATION, ServerTimeSpan = SERVER_DURATION)]
public string Metadata()
{
    return _contextProvider.Metadata();
}

如果某人有更清洁的解决方案,或者内部通过微风实施的解决方案,我会保留问题。

答案 1 :(得分:3)

您可以查看Breeze文档主题“Load metadata from script”,其中描述了捕获JavaScript文件中的元数据并将其加载到index.html中的其他脚本旁边。您可以将标准缓存清除技术应用于此类 metadata.js ,如果浮动您的船,甚至可以从CDN分发。