【问题标题】:Is there any reason not to use absolute paths in asp.net MVC?有什么理由不在 asp.net MVC 中使用绝对路径吗?
【发布时间】:2016-03-25 07:45:01
【问题描述】:

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

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 提要等更加开放方面,这绝对是更好的选择。有缺点吗?似乎绝对路径应该是默认的,而相对路径应该是自定义实现。

【问题讨论】:

    标签: c# asp.net-mvc relative-path


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      相关资源
      最近更新 更多