2

我在文件夹中放置了一个 .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)我有什么方法可以指定这些网站图标的缓存时间?我应该在 /Content 文件夹中使用某种 web.config 文件吗?

"<link href="@Url.Content("~/Content/ ... b)我的一些代码使用了我应该使用的语法@Url.Content吗?/Content使用它和只在 href 中指定有什么区别?

4

1 回答 1

6

[OutputCache]a)您可以通过服务器端控制器操作为网站图标提供服务,在该操作中,您可以通过使用属性装饰它来指定它应该被缓存多长时间:

[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 中的虚拟目录中,您的站点仍将继续工作。如果您像这样对 url 进行硬编码,/content/...它将在本地工作,但一旦您在 IIS 中发布,它将不再工作,因为现在正确的位置是/yourappname/content/...Url.Content 帮助程序所考虑的。

于 2012-05-18T16:59:13.003 回答