ASP.NET C# 응용 프로그램을 작성 중이며 작업 성능을 향상시키고 자합니다.json 문자열을 얻는 ajax 호출의 성능을 향상 시키십시오.
내가 가진 것은 버튼입니다. 사용자가 클릭하면 데이터베이스에서 데이터를 가져 와서 데이터를 표시하는 Ajax 호출을 보냅니다.
데이터베이스의 스키마는 다음과 같이이다 :
나는 국가의 목록을 가지고, 각 국가는 여러 시리즈를 가지고 (인구, 기름, 물 ....)와 각 시리즈는 여러가 년 (매년 가치가 있음). 그래서 기본적으로 그 년의 foreach 국가를 통해 시리즈의 진화.
데이터 가져 오기 AJAX를 사용하여 웹 서비스를 호출합니다. webservice는 시리즈 이름을 입력으로 받아들이고, 나는 모든 년간 모든 coutry에 대한 해당 시리즈의 데이터를 출력으로 필요로합니다. 출력 데이터는 다음과 같은 자바 객체 여야합니다.
워터 = { "1990": { "미국": 0.1, "캐나다": 0.3, "오스트레일리아": 0.4}, "1991" 미국 "0.1"캐나다 ": 0.5}}
AJAX 호출 :
$.ajax({
type: "POST",
url: "Service/WebService.asmx/GetData",
dataType: "json",
async: false,
data: "{'Series':'" + Series+ "'}",
contentType: "application/json; charset=utf-8",
success: function (data) {
mapValues = JSON.parse(data.d);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
서비스 사용 엔티티 프레임 워크는 데이터베이스에서 읽을 수 있습니다.
var Context = new DataModel.DBEntities();
IEnumerable<YearClass> r = (from y in Context.Years
where y.Series.Name == Variable
select new YearClass
{
year = y.Name,
value = y.Value,
CountryCode = y.Series.Country.Code
});
yearClass는 여기에서 사용하기 위해 강력한 유형화 된 유형입니다.
그런 다음 모든 연도를 반복하고 원하는 형식과 일치하도록 문자열을 연결하여 JSON을 작성합니다.
그러나이 프로세스는 많은 시간을 이야기하고 있으며 성능을 향상시킬 방법을 찾아야합니다.
어떤 부분을 개선 할 수 있습니까? 어떤 조언을 크게 주시면 감사하겠습니다.
어떤 프로세스가 "많은 시간"을 보냅니 까? 귀하의 게시물에서 확실하지가 않습니까? – spender
잘 모르겠습니다. 버튼을 클릭하면 응용 프로그램이 4 초 동안 정지 한 다음 데이터가 표시됩니다. 어떤 부분이 가장 많은 시간을 말하고 있는지 어떻게 알 수 있습니까? – Youssef
나는 성능 저하의 대부분이 색인을 만들 수 있다고 말할 것이다. 이름 열의 색인, 코드. 다음은 첫 번째 요청이 매우 길다는 것이 정상입니다 (4 초라고 말했듯이). – VikciaR