caching - Breeze Metadata request URL with cache bust

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

我目前正在使用 Breeze.js(1.4.1 版)和 HotTowel 模板,一切都运行良好。

但是,我想知道是否有一种方法可以在发送的请求中轻松包含 Metadata 一个可配置的后缀,例如 ?v=1.0.0.1 ,以类似于我目前正在做的方式 require.js在版本更改期间破坏本地缓存。

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

对于我目前使用的实际 WebApi 缓存 WebApi.OutputCache所以这很适合这个。

最佳答案

好吧,我找到了一种方法,无需 Breeze 的任何特定支持,只需 WebApi 路由。

我只是基本上将 Controller 路由更改为以下内容:

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();
}

如果有人有更干净的解决方案,或者是由 Breeze 在内部实现的,我会留下这个问题。

关于caching - Breeze Metadata request URL with cache bust,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20574310/

相关文章:

breeze - 能否在属性更改时验证新创建的实体,而不是在保存时

caching - 将 Redis 用于 Symfony/var/cache 和/var/logs

http - 没有 Cache-Control 头的 Squid 的默认缓存策略是什么?

c# - 在 Web API 中使用 id 参数后的 Action 进行路由

c# - EntityFramework 嵌套对象更新

javascript - Breeze 中 EntityManager 的服务名称是什么?

javascript - 等待数据返回,与 Angular 和 Breeze 同步调用

.net - 缓存数据的最佳方式

php - 如何在 Symfony 2 中缓存?

c# - 完全访问 Google Drive 上的特定文件夹