次のコードをキャッシュする最良の方法は何ですか。したがって、データはデータベースから一度読み込まれ、毎回キャッシュから提供されますか?Webサービスでの結果文字列またはLinqクエリのキャッシュ方法C#
複数のドメインから1日に何千回もアクセスされます。私はまた、おそらくピクチャをリフレッシュする必要があるときにキャッシュをクリアできるようにしたい。
// GETAll api/category
[WebMethod(CacheDuration = 600)]
public string GetAllCategories()
{
using (var db = new nopMass())
{
var cats = db.Categories
.Where(x => x.ParentCategoryId == 1
&& x.Deleted == false
&& x.Published == true)
.OrderBy(c => c.ParentCategoryId)
.ThenBy(c => c.DisplayOrder)
.AsEnumerable()
.Select(cat => new Category
{
Id = cat.Id,
Name = cat.Name,
Description = cat.Description,
MetaKeywords = cat.MetaKeywords,
MetaDescription = cat.MetaDescription,
MetaTitle = cat.MetaTitle,
PictureId = cat.PictureId,
DisplayOrder = cat.DisplayOrder,
CreatedOnUtc = cat.CreatedOnUtc,
Product_Category_Mapping = cat.Product_Category_Mapping,
ParentCategoryId = cat.ParentCategoryId,
})
.ToList();
string XML = "";
XML += "<Collection>";
foreach (var item in cats)
{
XML += "<Category>";
XML += "<Id>";
XML += item.Id.ToString();
XML += "</Id>";
XML += "<Name>";
XML += item.Name;
XML += "</Name>";
XML += "<Description>";
XML += item.Description;
XML += "</Description>";
XML += "<MetaKeywords>";
XML += item.MetaKeywords;
XML += "</MetaKeywords>";
XML += "<MetaDescription>";
XML += item.MetaDescription;
XML += "</MetaDescription>";
XML += "<MetaTitle>";
XML += item.MetaTitle;
XML += "</MetaTitle>";
XML += "<PictureUrl>";
try
{
XML += GetPictureUrl(item.PictureId);
}
catch { }
XML += "</PictureUrl>";
XML += "<DisplayOrder>";
XML += item.DisplayOrder.ToString();
XML += "</DisplayOrder>";
XML += "<CreatedOnUtc>";
XML += item.CreatedOnUtc.ToString();
XML += "</CreatedOnUtc>";
XML += "<ParentCategoryId>";
XML += item.ParentCategoryId.ToString();
XML += "</ParentCategoryId>";
XML += "</Category>";
}
XML += "</Collection>";
return XML;
}
}
IMHO使用xmlseralizationではなく、手でコード化されたXMLを動作するはずやりなさいhttp://stackoverflow.com/questions/4123590/serialize-an-object- to-xml – Eldho
IISを使用してイメージが提供されると、デフォルトでキャッシュされます.URLを変更すると、新しいファイルになり、ロードされます。同じ名前のファイルを変更しても、最後に変更されたプロパティを使用してブラウザにロードされます。その後、キャッシュされます。 また、ブラウザのローカルストレージを利用することもできます – Eldho
Linqクエリの結果をキャッシュする方法はありますか?したがって、それぞれのリクエストで同じ結果をフェッチする必要はありませんか? – Orion