如何避免Jquery函数的缓慢加载

时间:2013-10-08 18:39:00

标签: javascript php jquery

我是PHP和Jquery的新手。有一个部门使用Jquery在灯箱中显示图像。但是,我不知道为什么图像加载缓慢 以下是代码:

<div class="image-zoom" rel="lightbox" id="gallery">
        <div id="album1" style="margin-right:18px;" rel="lightbox">
            <?php
            if (isset($albums[0])) {
                $i = 1;
                foreach ($albums[0]['photos'] as $photo) {
                    if ($i == 1) {
                        ?>
                        <a href="<?= $photo ?>" rel="lightbox">
                            <img src="<?= $photo ?>" width="214" height="160" />
                        </a>
                        <div class="zoom-magnifier" id="gallery">
                            <a href="<?= $photo ?>" rel="lightbox">
                                <img src="<?php echo Yii::app()->theme->baseUrl; ?>/images/zoom-icon.png" id="zoom"/>
                            </a>
                            <div id="more-text" align="left" ><?=$albums[0]['title']?></div>
                        </div>
                        <?php

                    } else {
                        ?>
                        <a href="<?= $photo ?>" rel="lightbox"></a>
                        <?php
                    }
                    $i++;
                }              
            }
            ?>
        </div>
        <div id="album2" rel="lightbox">
            <?php
            foreach (array(1, 0) as $album_id) {
                if (isset($albums[$album_id])) {
                    $i = 1;
                    foreach ($albums[$album_id]['photos'] as $photo) {
                        if ($i == 1) {
                            ?>
                            <a href="<?= $photo ?>" rel="lightbox">
                                <img src="<?= $photo ?>" width="214" height="160" />
                            </a>
                            <div class="zoom-magnifier">
                                <a href="<?= $photo ?>" rel="lightbox">
                                    <img src="<?php echo Yii::app()->theme->baseUrl; ?>/images/zoom-icon.png" id="zoom1"/>
                                </a>
                                <div id="more-text2" class="more-txt-link"><?=$albums[$album_id]['title']?></div>
                            </div>
                            <?php
                        } else {
                            ?>
                            <a href="<?= $photo ?>" rel="lightbox"></a>
                            <?php
                        }
                        $i++;
                    }                        
                    break;
                }
            }
            ?>
        </div>

以下是灯箱脚本:

<script type="text/javascript" src="<?php echo Yii::app()->theme->baseUrl; ?>/js/jquery.lightbox-0.5.js"></script>
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/jquery.lightbox-0.5.css" media="screen" />
<script type="text/javascript">
    $(function() {
        $('#album1 a').lightBox();
        $('#album2 a').lightBox();
    });
</script>  

因此,当第一次加载页面时,分区中没有任何内容。但when I refresh页面我认为它是正确的。为什么会这样发生。为什么它只在重新刷新时出现而不是第一次出现。我怎么能避免这个

2 个答案:

答案 0 :(得分:0)

  1. when the page is loaded for the first time nothing comes in the division.But when I refresh the page I get it correct. - 第一次也许你的照片没有完全下载。

  2. 为提高速度,请勿使用<img src="<?= $photo ?>" width="214" height="160" />的原始照片。拇指使用214x160px拇指;)

  3. 尝试在页脚中放置javascript以改善页面加载时间。如果你的jquery已经准备就绪,那么它会在页面打开时启动,并且可能还没有下载所有页面内容。

  4. <强>更新

    如果你使用Yii,你可能会使用MVC而不是signle文件。

答案 1 :(得分:0)

我希望您加载的图片远大于214x160 - 浏览器正在下载完整图像(可能是一个大文件),然后将其压缩到img标记的已定义大小。

要解决此问题,请在图像编辑器中将图像调整为214x160或使用动态缩放器,例如TimThumbImageResize(由我!),它位于您的服务器上并调整图像大小按要求。