我已将.ico和.png文件放在/Content/Ico
文件夹中,我的_layout.cshtml中有以下内容
<!-- Favicon -->
<link rel="shortcut icon" type="image/x-icon" href="/Content/Ico/favicon.ico">
<link rel="icon" type="image/png" href="/Content/Ico/tick-circle.png">
a)我有什么方法可以指定这些favicons的缓存时间吗?我应该在/ Content文件夹中使用某种web.config文件吗?
b)我的部分代码使用语法"<link href="@Url.Content("~/Content/ ...
我应该使用@Url.Content
吗?使用它和在href中指定/Content
之间的区别是什么?
答案 0 :(得分:5)
a)您可以通过服务器端控制器操作为favicon提供服务,在该操作中,您可以通过使用[OutputCache]
属性进行装饰来指定应缓存的时间:
[OutputCache(Duration = 3600, Location = OutputCacheLocation.Client)]
public ActionResult Favicon()
{
var icon = Server.MapPath("~/content/ico/favicon.ico");
return File(icon, "image/x-icon");
}
然后:
<link rel="shortcut icon" type="image/x-icon" href="@Url.Action("Favicon", "SomeController")" />
b)始终使用@Url.Content("~/content/...")
而不是/content/...
来指定静态文件的相对路径。原因是Url.Content帮助程序考虑了虚拟目录名称,即使将其部署到IIS中的虚拟目录中,您的站点也将继续工作。如果您对此/content/...
这样的网址进行硬编码,它将在本地运行,但一旦您在IIS中发布它将不再有效,因为现在正确的位置是/yourappname/content/...
,这是Url.Content帮助程序所考虑的。