ASP.NET MVC控制器操作方法主要用于处理"业务"操作,但它可以用于更多.
我认为看到人们创造的创造性,有用的东西对他人来说可能是实用的或有用的,这会很有趣.
这是我的贡献:
Javascript文件连接器 - 减少http请求的数量:
[OutputCache(Duration = 5 * 60, VaryByParam="")] // DONT USE "None" here *
public ContentResult RenderJavascript(){
StringBuilder js = new StringBuilder();
StringWriter sw = new StringWriter(js);
// load all my javascript files
js.AppendLine(File.ReadAllText(Request.MapPath("~/Scripts/jquery.hoverIntent.minified.js")));
js.AppendLine(File.ReadAllText(Request.MapPath("~/Scripts/jquery.corner.js")));
js.AppendLine(File.ReadAllText(Request.MapPath("~/Scripts/rollingrazor.js")));
return new ContentResult()
{
Content = js.ToString(),
ContentType = "application/x-javascript"
};
}
Run Code Online (Sandbox Code Playgroud)
映射到它的路线:
// javascript
routes.MapRoute(
"js-route",
"dynamic/js",
new { controller = "Application", action = "RenderJavascript" }
);
Run Code Online (Sandbox Code Playgroud)
请从您的母版页中查看:
<script type="text/javascript" src="/dynamic/js"></script>
Run Code Online (Sandbox Code Playgroud)
请注意,我已为输出设置了缓存,因此如果您要更改JS并刷新页面,则可能需要禁用缓存!
我需要回来找出如何gzip它.
*您不应该使用VaryByParam ="None",因为这会导致发送Vary标头,这会导致浏览器返回并检查新版本.如果你真的需要更改你的js内容,那么你的用户只需要等待5分钟!
我使用以下输出缓存配置文件:
<add name="MyFunkyProfile" duration="180" varyByParam="*" location="ServerAndClient" />
Run Code Online (Sandbox Code Playgroud)
在dev中,我有一个带有一个Vary条目的响应头:
HTTP/1.1 200 OK
Server: Microsoft-IIS/7.5
...
Vary: Accept-Encoding
Cache-Control: private, max-age=180, s-maxage=0
...
Run Code Online (Sandbox Code Playgroud)
当我部署我的应用程序时,我在响应中插入了额外的Vary条目:
HTTP/1.1 200 OK
Server: nginx
...
Vary: Accept-Encoding
Cache-Control: private, max-age=180, s-maxage=0
...
Vary: *
...
Run Code Online (Sandbox Code Playgroud)
为什么这个额外的Vary条目?这会阻止缓存正常工作.
任何想法如何解决这一问题?
asp.net-mvc outputcache http-headers asp.net-mvc-3 appharbor
我目前在ASP.NET MVC 3应用程序中使用存储库模式.
我使用OutputCache通过使用类似于此的数据注释装饰我的控制器方法来减轻数据库的负载:
[OutputCache(Duration = 3600, VaryByParam = "userName")]
Run Code Online (Sandbox Code Playgroud)
最终,我想要实现的是一种缓存级别,数据被缓存直到它被更新(即它发生变化).我正在使用Entity Framework 4.1 for ORM.
使用我选择的堆栈建议的方法是什么?
asp.net-mvc caching outputcache entity-framework-4.1 asp.net-mvc-3