私はこれまでのところ大ヒットを証明しているFlickrNetc#ライブラリを使用しています。
しかし、私には1つの問題があります。ユーザーIDのすべての写真を取得できますが、別のAPI呼び出しを行わないと、特定の写真が属するセット名を取得できません。この別の呼び出しは、私に大きなパフォーマンスの問題を与えています。ホームページは40枚の画像をロードするのに30秒かかります。これは増加するだけです。
画像を表示するために同位体を使用しているので、各写真のセット名を取得する必要があります。
私は単にAPIから画像を取得し、それらをリピーターにバインドしています。
これが私のコードです。
C#
Flickr f = FlickrManager.GetAuthInstance();
protected void Page_Load(object sender, EventArgs e)
{
string userID = f.PeopleFindByEmail("me@yahoo.com").UserId;
PhotoSearchOptions options = new PhotoSearchOptions
{
UserId = userID,
Extras = PhotoSearchExtras.AllUrls | PhotoSearchExtras.Description | PhotoSearchExtras.Tags,
SortOrder = PhotoSearchSortOrder.Relevance,
};
var photos = f.PhotosSearch(options);
rptPhotos.DataSource = photos;
rptPhotos.DataBind();
}
protected string GetSetNameForImageID(string imageID)
{
var sets = f.PhotosGetAllContexts(imageID).Sets;
return sets[0].Title.ToLower().Replace(" ", "-");
}
HTML
<asp:Repeater runat="server" ID="rptPhotos">
<ItemTemplate>
<section class="<%# GetSetNameForImageID( Convert.ToString( Eval("PhotoID") ) ) %> item">
<%--<a href="@Url.Action("Image", "Home", new {id = item.PhotoId})">--%>
<a href="/View.aspx?pid=<%# DataBinder.Eval(Container.DataItem, "PhotoID") %>">
<div>
<div class="item_hover">
<header>
<span>D</span>
<%--<p title="@item.Description" class="tiptip">_</p> --%>
<p title="<%# DataBinder.Eval(Container.DataItem, "Description") %>" class="tiptip">_</p>
<hgroup>
<%--<h2>@item.Title</h2>
<h3>@item.Tags[0]</h3>--%>
<h2><%# DataBinder.Eval(Container.DataItem, "Title") %></h2>
<h3><%# DataBinder.Eval(Container.DataItem, "Tags[0]") %></h3>
</hgroup>
</header>
</div>
<%--<img src="@item.Small320Url" alt="Video sit amet consectetur" />--%>
<img src="<%# DataBinder.Eval(Container.DataItem, "Small320Url") %>" alt="Video sit amet consectetur" />
</div>
</a>
</section>
</ItemTemplate>
</asp:Repeater>
GetSetNameForImageIDとそれに続くAPI呼び出しなしで、各画像のセット名を取得するより迅速な方法はありますか?