2009-02-05 11 views

Respuesta

24

La diferencia entre ResolveUrl y ResolveClientUrl es que ResolveClientUrl devuelve una ruta relativa a la página actual, ResolveUrl devuelve una ruta relativa a la raíz del sitio:

Yo recomiendo usar rutas absolutas.

Editar: Rick Strahl ha publicado un buen artículo sobre este

Edit2: poco alejado sobre el almacenamiento en caché. No se agrega a la respuesta y puede no ser necesariamente precisa.

http://west-wind.com/weblog/posts/132081.aspx

+0

1 buena. Por cierto, ¿cómo puede ayudar con el almacenamiento en caché? (¿Y qué almacenamiento en caché?) – ziya

+0

En ese momento pensé que podría ayudar al cliente (o al navegador) a almacenar en caché imágenes del servidor (es decir, si el servicio de caché no era muy inteligente, puede duplicar elementos si se usan rutas relativas)) Pero no puedo decirlo con certeza, así que lo eliminé. –

+1

Si está atrapado con una aplicación heredada que utiliza una sesión sin cookies donde el ID de la sesión está en el URI, VirtualPathUtility.ToAbsolute excluirá el sessionId de la URL, es decir, un mejor almacenamiento en caché de los archivos CSS, JPG y Javascript externo. Porque si SessionID está en la URL, el navegador obtendrá el recurso al menos una vez por cada nueva sesión en lugar de desde la caché privada del navegador. –

1

Otra diferencia que noté:

Código:

string value = "~/Docs/Hello & World.aspx"; Response.Write(HyperLink1.ResolveClientUrl(value) + "<br/>"); Response.Write(HyperLink1.ResolveUrl(value) + "<br/>");

Resultado:

Docs/Hola% 20% & 20World.aspx

/Docs/Hola & World.aspx