我有一个大型数据库来从Ajax响应中获取动态图像。 我怎么能快速闪电呢
图像采用逗号分隔形式,例如
img4.jpg,img3.jpg,img5.jpg,img7.jpg,img11.jpg,img1.jpg,img2.jpg,img3.jpg,img6.jpg,img8.jpg < / p>
我的php代码。
function childImgsGrid(){
$parentImgId = $_POST['parentImgId'];
$query = mysql_query("select child_imgs_id,child_imgs from parent where parent_img_id = $parentImgId")
or die(mysql_error());
$result = mysql_fetch_array($query);
$arrayOfImages = explode(",", $result['child_imgs']);
$i=1;
foreach($arrayOfImages as $nameOfImage){
echo "<li><a href='#lookbook' ><div class='view'><img src='images/slide/".$nameOfImage."'></a></li>";
}
}
和Ajax
var parentImgId = $anchor.attr("id");
var dataString = 'queryString=childImgsGrid'+'&parentImgId='+parentImgId;
var arrayOfImages = new Array();
$glob.ajax({
type: "POST",
url: "ajaxtemplate.php",
data: dataString,
cache: false,
success: function(response) {
$glob('#grid').html(response);
}
});
答案 0 :(得分:1)
这是一般性的非常广泛的主题,但我会尝试对此事进行一些说明。
图片的优化版本
与Facebook一样,添加图像后,您可以使用后台作业来创建图像的低质量版本。请求图像时,将显示此低质量图像,同时在背景中加载原始高质量图像。完成加载后,只需替换。
预加载
如果您知道或了解需要显示哪些图像(在库中预加载下两个或三个图像的常见情况),您可以在没有用户输入的情况下获取它们。因此,当用户打开图像#443时,您将在后台加载#444,#445。
使用内存商店
如果数据库记录非常大,并且假设您将文件系统中的图像保存为数据库中的blob,并且回溯基于唯一键(主要或其他),则可以实现memcache或redis等操作这个问题非常快。
Node.js的
如果图像请求数量变得非常高,请考虑使用像node.js这样的异步服务器响应架构。
特定的用例和技术将改变上述每一个的实现,但整体概念应该是可靠的。