【发布时间】:2011-11-23 01:36:44
【问题描述】:
我不是最有纪律的开发人员,不知道标准并且是自学成才的,所以请多多包涵。我创造的东西非常合乎逻辑和快速,但并不总是使用“编程标准”。
我有一个使用地理定位 API 的移动应用。它从我的数据库中获取数千个地点,并为用户当前位置周围的地点制作 gmaps v3 标记。
我的 JS 有一个 ajax 调用到一个调用数据库的 aspx 页面,生成一个 json 字符串,然后将 json 字符串发送到 javascript,然后创建 google 地图标记。
如果 json 字符串在平面文件中,我会节省时间吗?我不确定,一般来说,从 aspx 页面访问 sql db 是否比使用预渲染 JSON 的平面文件上的 c# 文件 i/o 更快。
编辑:瓶颈在 JS 而不是服务器端代码。
(当然,使用平面文件,每次更新数据库时都会更新)
function ajaxReturn(responseText) {
var JSONbizarray = (responseText.substring(responseText.indexOf('<span id="Label1">'), responseText.indexOf('</span>')).replace('<span id="Label1">', ''));
var JSONBizList = JSON.parse(JSONbizarray);
var list = document.getElementById('businessListContent');
list.innerHTML = "";
list.innerHTML += "<ul id=\"barListUL\" data-role=\"listview\" data-theme=\"d\" data-dividertheme=\"d\">";
for (var i = 0; i < JSONBizList.length; i++) {
var biz = JSONBizList[i];
list.innerHTML += "<li tabindex=\"0\" data-theme=\"d\" class=\"ui-btn ui-btn-icon-right ui-li ui-btn-hover-d\" role=\"option\">stuff using json object</li>";
}
list.innerHTML += "</ul>";
}
【问题讨论】:
-
如果您的意思是您将有一些流程维护一个 JSON 的“平面文件”,该文件在每次数据库更改时都会更新,然后 ajax 调用只会从该文件返回数据,我想它可以加快速度,但我不确定这种差异是否值得。您可以尝试并测量它,但您当前的实现是否明显缓慢,或者......?
-
感谢@nnnnnn,是的,这正是我的意思,它的速度很慢(8 秒),尽管 mapview 似乎比 listview 快,这让我很困惑,因为它要复杂得多(mapview 像 5 秒, listview 8)
-
我希望没有互联网连接障碍的加载时间更像是 3-4 秒。这些时间是针对约 1000 个 json 对象,每个对象有 7 个属性。
-
听起来像是您不一定需要的额外复杂层,并且可能会引入更多潜在的故障点。除非您使用像 EF 或其他 API 这样有点“臃肿”的框架,否则数据库访问不应该很慢?同样对于服务层,我认为您不应该使用 ASPX 页面。考虑一个 WCF 服务或原始 http 接口,它应该更快。如果你结合原始的 SqlDataReader + 原始的 http 请求,甚至是宁静的 WCF,它应该会非常快。
-
什么是 EF 或您认为会减慢这种事情的其他 API?我相信我正在通过 .NET 实体框架使用标准 DB 连接字符串(它是 MySQL 而不是 MSSQL,但我有一个到 vs2010 的插件,让我可以从 MySQL 构建实体对象可能是它???),我不知道是否可以称为 API?
标签: c# javascript ajax geolocation