Différentes façons d'afficher des images dans ASP.NET MVC et lors de l'utilisation de l'approche

Je suis en construction d'un site web à l'aide de ASP.NET MVC4 à télécharger/afficher des images et trouvé quelques façons de faire pour afficher des images, principalement à la ci-dessous -

1) Stocker l'image dans un fichier local sur le serveur et d'utiliser un chemin relatif pour l'afficher sur la page.

 //ImageFile is a property which holds a path to the image in the model
 <img src="@item.ImageFile" />

 When the page is rendered, this becomes a path like - <img src="/Content/Images/Jellyfish.jpg" />      

2) Stocker l'image comme un tableau d'octets et de restauration à l'aide d'un contrôleur de l'action

//Use a controller action (GetImg) to get the URL of the image
<img src="@Url.Action("GetImg", "ViewPhotos", new { id = item.ID })" alt="Image" />  

When the page is rendered, this becomes a path like - <img src="/ViewPhotos/GetImg/4" alt="Image" />    

3) Stocker l'image comme un tableau d'octets et de restauration dans la vue directement

//Directly re-construct the image in the view from the byte array (Image property of the model)
<img src="@String.Format("data:image/jpg;base64,{0}", Convert.ToBase64String(item.Image))" />  

When the page is rendered, this becomes a path like - <img src="data:image/jpg;base64,/9j/4AAQSkZJRgABAgEA....<long string> .../>

Mes questions sont -

1) Quelle est la différence entre le 1 et le 2 ?

1 fournit directement le chemin d'accès au fichier et 2 fournit une URL. Sont-ils les mêmes dans l'arrière-plan ou une méthode meilleure que l'autre?

J'ai vérifié ici et il dit que c' - Url.Action va construire le chemin de l'action, de retour d'une url, et non les résultats de l'exécution de l'action. Alors, à quel moment les résultats sont-ils récupérés?

2) - T-il fait un impact sur les performances lors de la 3, est utilisée contre 1 ou 2?

3) l'approche Qui doit être utilisé lorsque les images sont de petites tailles (moins de 1 mo) ou grande ?

Heureux si vous pouvez pointer vers moi tous les liens qui peuvent être utiles.
Merci.

Code -

//Modèle

public class Photo
{
  public int ID { get; set; }
  public string ImageFile { get; set; }
  public byte[] Image { get; set; }
  public string Caption { get; set; }
}

//Contrôleur

public FileContentResult GetImg(int id)
{
    byte[] byteArray = db.Photos.Find(id).Image;
    if (byteArray != null)
    {
        return new FileContentResult(byteArray, "image/jpeg");
    }
    else
    {
         return null;
    }
}

//Afficher (approche 2)

@model IEnumerable<MyPhotoLibrary.Models.Photo>
@foreach (var item in Model) {
<tr>
  <td>
    <img src="@Url.Action("GetImg", "ViewPhotos", new { id = item.ID })" alt="Image" />
  </td>
</tr>
}

//Afficher (c'est l'approche 3)

@model IEnumerable<MyPhotoLibrary.Models.Photo>
@foreach (var item in Model) {
<tr>
  <td>
    <img src="@String.Format("data:image/jpg;base64,{0}", Convert.ToBase64String(item.Image))" />
  </td>
</tr>
}

OriginalL'auteur siddharth | 2013-05-31