我目前正在使用 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/