【发布时间】:2012-08-25 07:41:06
【问题描述】:
我有一个家庭列表,其中每个家庭 - 在滚动时 - 显示一个工具提示,其中包含有关单个家庭的其他信息(居住地信息和该地点的 3 张图片)。
那么最佳实践(性能)是什么?是在开始时预加载所有数据还是仅在需要时(翻转时)才 ajax 请求数据?
请注意,页面已经包含 3 个 select mysql_queries,工具提示的数据提取需要另外 2 个。
查询(考虑到搜索复杂性):
原始 3 个查询:
SELECT * FROM news ORDER BY bDate DESC LIMIT 5;
SELECT * FROM family ORDER BY created DESC LIMIT 5;
SELECT bplace.placeID, bplace.sName, bplace.countryID, bcountry.regionID FROM bplace, bcountry WHERE bplace.countryID = bcountry.countryID ORDER BY created DESC LIMIT 5;
Tooltip 2 查询(预加载方式):
while(...){
$allFamilies[] = $row["familyID"];
}
$allFamilies = implode(',',$allFamilies);
SELECT sName FROM bplace WHERE placeID IN ($allfamilies);
SELECT url FROM images WHERE placeID IN ($allfamilies);
工具提示 2 查询(ajax 方式):
SELECT sName FROM bplace WHERE placeID='1';
SELECT url FROM images WHERE placeID='1';
【问题讨论】:
-
我认为 ajax 将是一个不错的选择,因为它不需要重新加载页面,如果所有家庭数据都很大,预加载可能会很昂贵
-
这完全取决于您想要的用户体验。您甚至可以混合并最初加载基本数据,然后在初始页面加载后加载所有翻转内容。此外,对于您的翻转查询,您似乎可以减少到单个查询,例如
SELECT bplace.sName, images.url FROM bplace JOIN url ON bplace.placeID = images.placeID WHERE placeID = ?