0
를 사용하여 페이지의 여러 버전을 캐시 어떻게 제품 페이지의 성능을 향상시키기 위해 캐싱을 구현하기로 결정했다.면도기 동적 쿼리 및 WebCache를
각 페이지에는 제품의 이미지를 대량으로 포함되어 있습니다.
은 내가 면도기보기에 다음 코드를 만들었습니다. 결과에를 이@foreach (dynamic p in data)
{
<a href="~/Products/View/@p.ProductID"
<img src="~/Thumbnail/@p.ProductID"></a>
}
캐싱 코드는 잘 작동하지만 새로운 쿼리 문자열 매개 변수를 전달할 때 (페이지의 버전을 변경) :
@{
var productID = UrlData[0].AsInt();
var cacheItemKey = "products";
var cacheHit = true;
var data = WebCache.Get(cacheItemKey);
var db = Database.Open("adldb");
if (data == null) {
cacheHit = false;
}
if (cacheHit == false) {
data = db.Query("SELECT * FROM Products WHERE ProductID = @0", productID).ToList();
WebCache.Set(cacheItemKey, data, 1, false);
}
}
다음 코드와 데이터를 사용하고 있습니다 브라우저는 신고 된 현금화 시간과 동일합니다.
페이지의 모든 버전을 캐싱하는 방법은 무엇입니까?
감사
올렉
데이빗 감사합니다. 그러나 "방어적인 코드를 추가하는"것은 무엇을 의미합니까? 나는 이것에 익숙하지 않다. – user879356
'ToString()'을 호출하기 전에 아마도'productID'에'NULL'을위한 테스트가 있다고 생각했지만 데이터에 문제가 있다면 샘플 코드의'AsInt()'에서 실패 할 것입니다. .. '방어 코드'란 단순히 데이터 유형과 관련된 가정을 테스트하는 코드를 추가하는 것을 의미합니다. 위키피디아의 Defensive Programming에 대한 링크는 다음과 같습니다. 당신이 허용 대답으로 내 대답을 표시 할 경우 http://en.wikipedia.org/wiki/Defensive_programming는 –
나는 매우 감사하게 될 것입니다. 좋은 하루 되세요. –