2009-02-05 6 views

Répondre

24

La différence entre ResolveUrl et ResolveClientUrl est que ResolveClientUrl retourne un chemin relatif à la page en cours, ResolveUrl retourne un chemin relatif à la racine du site:

Je vous recommande d'utiliser des chemins absolus.

Modifier: Rick Strahl a publié un bel article sur ce

Edit2: Suppression de la mise en cache peu. Ne pas ajouter à la réponse et ne peut pas nécessairement être précis.

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

+0

+1 bon. BTW, comment cela peut-il aider à la mise en cache? (Et quelle mise en cache?) – ziya

+0

A l'époque je pensais que cela pourrait aider le client (ou le navigateur) à mettre en cache les images et autres du serveur (si le service de cache n'était pas très intelligent, il peut dupliquer des éléments si des chemins relatifs sont utilisés). Mais je ne peux pas dire avec certitude, alors j'ai enlevé cela. –

+1

Si vous êtes bloqué avec une application héritée utilisant la session cookieless où l'ID de session se trouve dans l'URI, VirtualPathUtility.ToAbsolute exclura l'ID session de l'URL, c'est-à-dire une meilleure mise en cache des fichiers CSS, JPG et JavaScript externes. Parce que si SessionID est dans l'URL le navigateur obtiendra la ressource au moins une fois pour chaque nouvelle session au lieu du cache privé du navigateur. –

1

Une autre différence que j'ai remarqué:

code:

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

Résultat:

Docs/Bonjour% 20% & 20World.aspx

/docs/Bonjour & world.aspx

Questions connexes