有什么理由不在asp.net MVC中使用绝对路径吗

本文关键字:路径 MVC 理由 什么 net asp | 更新日期: 2023-09-27 18:27:16

MVC中的所有内置框架方法,如Url.ActionUrl.Content,在生成的html中只生成相对url。许多SO答案提供了获得绝对路径的方法。例如:

using System;
using System.Web;
using System.Web.Mvc;
public static class UrlExtensions
{
    public static string Content(this UrlHelper urlHelper, string contentPath, bool toAbsolute = false)
    {
        var path = urlHelper.Content(contentPath);
        var url = new Uri(HttpContext.Current.Request.Url, path);
        return toAbsolute ? url.AbsoluteUri : path;
    }
}

对我有用。

我的问题是,有没有理由不使用绝对路径?它在让你的网站对网络抓取、辅助工具、RSS订阅源等更加开放方面做得更好。有缺点吗?看起来绝对路径应该是默认路径,相对路径应该是自定义实现。

有什么理由不在asp.net MVC中使用绝对路径吗

在动态生成页面内容的web应用程序的上下文中,URL的相对性可能不那么重要。传统上,对于静态HTML,硬编码绝对路径是一个非常糟糕的主意。如果你需要移动网站,它需要找到每个绝对URL的实例并更改它

然而,最好的做法仍然是只使用路由所需的URL。虽然可能更为罕见,但有一些东西,如Google Cache、Archive.org等,使用绝对路径有效地破坏了在缓存中导航的所有能力。除此之外,尽管现在可能不太常见,但仍然存在许多代理,它们缓存用户查看的网页,然后动态地将流量路由到缓存,而不是实际的网站。绝对URL也会打破这种局面。

最重要的是,这是不必要的,虽然它是最小的,但它确实增加了页面的额外重量。对于宽带用户来说,这毫无意义,但对于通过国际连接使用3G计量数据的人来说,每一个字节都很重要。