在使用新的捆绑和缩小功能对ASP.NET应用程序中的性能问题进行故障排除时,我注意到很多文件活动正在访问捆绑包中使用的javascript文件。
在一个干净的MVC应用程序上进行了一些测试之后,我注意到在第一次请求之后,我希望它能够读取文件来构建软件包,它没有在后续请求中读取文件大约一分钟左右。然后它会再次阅读它们,然后再安静一分钟左右。
显然这里有某种缓存,但是捆绑内容在哪里被缓存以及持续多长时间?我可以通过配置来控制这段时间吗?
答案 0 :(得分:4)
响应缓存在HttpContext.Cache内部,通过对VirtualPathProvider的CacheDepedency设置调用Insert以及用于生成包的文件。
/// <summary>
/// Stores the response for the bundle in the cache, also sets up cache depedencies for the virtual files
/// used for the response
/// </summary>
public void Put(BundleContext context, Bundle bundle, BundleResponse response) {
List<string> paths = new List<string>();
paths.AddRange(response.Files.Select(f => f.VirtualFile.VirtualPath));
paths.AddRange(context.CacheDependencyDirectories);
string cacheKey = bundle.GetCacheKey(context);
CacheDependency dep = context.VirtualPathProvider.GetCacheDependency(context.BundleVirtualPath, paths, DateTime.UtcNow);
context.HttpContext.Cache.Insert(cacheKey, response, dep);
bundle.CacheKeys.Add(cacheKey);
}
答案 1 :(得分:1)
原来我使用的是整个MVC4堆栈的预发布版本,包括System.Web.Optimization。升级到RTM解决了这个问题。