Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wydajne ładowanie zdjęć na strone
czarek1986
post 10.07.2009, 12:47:38
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


Witam. Mam problem, że robie stronę na której ładować ma się dużo zdjęć co wiadomo, że może trwać dość długo. Czy wie ktoś może jak się robi takie coś jak jest np. na fotka.pl że zdjęcia ładują się dopiero wtedy gdy są widoczne na ekranie, tzn. że jeśli np. w danej chwili ze 100 zdjęć na ekranie widzimy tylko 30, to reszta nie jest ładowana razem ze stroną tylko zostanie załadowana wtedy gdy przewiniemy strone tak, że te zdjęcia będą widoczne na ekranie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
zegarek84
post 10.07.2009, 13:02:18
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


AJAX....


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
erix
post 10.07.2009, 13:08:23
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jaki AJAX... ;/

Pobierany jest offset widoczności, jeśli obiekt jest w polu widzenia - ustawia SRC obrazka na prawidłowy.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
czarek1986
post 10.07.2009, 13:33:29
Post #4





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


Cytat
Pobierany jest offset widoczności, jeśli obiekt jest w polu widzenia - ustawia SRC obrazka na prawidłowy.


Ciekawie to brzmi smile.gif możesz coś o tym więcej napisać, albo przynajmniej nakierować na dalszy tok myślenia? Też myślałem o ajaxie dlatego napisałem w tej kategorii, ale słabo go znam i nie mam pomysłu jak można by to zrobić. 
Go to the top of the page
+Quote Post
zegarek84
post 10.07.2009, 14:01:46
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(erix @ 10.07.2009, 14:08:23 ) *
Jaki AJAX... ;/

Pobierany jest offset widoczności, jeśli obiekt jest w polu widzenia - ustawia SRC obrazka na prawidłowy.

no tak - pobierany ofset - a za pomocą czego?? - ano za pomoca js - a czy zwróciłeś uwagę jak się wczytują obrazki?? - ano zanim obiekt nie jest wczytany jest animacja ładowania... a więc czy to nie jest rozwiązane za pomocą js?? a ajax czym jest jesli nie technologją js??

może inaczej - wyłączcie obsługę skryptów js i porównajcie rezultaty winksmiley.jpg


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
czarek1986
post 10.07.2009, 14:40:15
Post #6





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


MAm jeszcze pytanie odnosnie pozwyzszej porady. Domyślam się, że linki do obrazków które nie są w danej chwili widoczne będą musiały być gdzieś cachowane. Moje pytanie, to jaka będzie najlepsza metoda cachowania dla takiego przypadku?
Go to the top of the page
+Quote Post
erix
post 10.07.2009, 15:24:21
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
wczytany jest animacja ładowania... a więc czy to nie jest rozwiązane za pomocą js?? a ajax czym jest jesli nie technologją js??

A wiesz, czym się różni AJAX od DHTML? snitch.gif Bo po Twojej wypowiedzi stwierdzam, że nie wiesz.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zegarek84
post 10.07.2009, 15:48:38
Post #8





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


tak wiem ;p - tutaj w kod nie patrzałem i w sumie wystarczyło dynamiczne dodanie obrazków po przesunięciu scrola - animacja jeśli nie zostaną wczytane nowe obiekty obrazka do zmiennej...

ale jakby nie było jedno i drugie rozwiązanie to js ;p - i w sumie teraz czarek1986 pytał się gdzie to lub jak cashować ;p - a Ty tu jakbyś szukał zaczepki zamiast go nakierować ;p

linki może cashować w dowolnym obiekcje np. hide formulaża lub w jakimś wewnętrznym skrypcie przypisując tablicę do zmiennej...

i jeśli chodzi o rozwiązanie w dhtml (dla mnie większej różnicy to nie robi choć akurat tu się zapędziłem proponując ajax gdyż sam obiekt new image wystarczy tongue.gif) to w skrypcie js skożystaj z tego:
http://blatek.ma.ciekawe.info/javascript/ob_image.html
przy czym będziesz już wiedział czy obrazek został dodany do zmiennej


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
czarek1986
post 12.07.2009, 00:11:57
Post #9





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


Cos mi nie wychodzi te ładowanie obrazka. Może zna ktoś jakiś gotowy skrypt który będzie działał tak jak opisałem wcześniej?
Go to the top of the page
+Quote Post
Fifi209
post 12.07.2009, 00:34:40
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(czarek1986 @ 12.07.2009, 00:11:57 ) *
Cos mi nie wychodzi te ładowanie obrazka. Może zna ktoś jakiś gotowy skrypt który będzie działał tak jak opisałem wcześniej?


Zapomniałeś chyba dodać: "proszę o przeniesienie tematu do działu Gotowe Rozwiązania"


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Pyciak
post 12.07.2009, 12:01:29
Post #11





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 30.04.2009
Skąd: Myślenice

Ostrzeżenie: (0%)
-----


Cytat
Cos mi nie wychodzi te ładowanie obrazka. Może zna ktoś jakiś gotowy skrypt który będzie działał tak jak opisałem wcześniej?


Pokaż ten kodzik to może jakoś zaradzimy. To nie jest forum typu zróbcie-to-za-mnie, a zrób-to-sam-ale-z-naszą-pomocą.
Go to the top of the page
+Quote Post
czarek1986
post 12.07.2009, 19:58:05
Post #12





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


Już sobie jakoś poradziłem i zaczeło mi działać. Teraz mam inny problem. Chodzi o to że przy przewijaniu strony czyli przy wywołaniu zdarzenia scroll za kazdym razem przeglądane są wszystkie obrazki dostępne na stronie iwyświetlane sa tylko te widoczne. Jednak zdarzenie to wywływane jest wiele razy przy kazdym nawet lekkim ruchu scrolla co wpływa negatywnie na obciążenie procesora. Czy można jakoś ograniczyć wywoływanie tego zdarzenia lub ograniczyć ilośc przeglądanych obrazków? 
Go to the top of the page
+Quote Post
erix
post 12.07.2009, 22:54:52
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Kolega ~Pyciak wyraził się niejasno?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
czarek1986
post 13.07.2009, 12:55:41
Post #14





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


Przepraszam za zwłokę z umieszczeniem kodu, ale trochę go modyfikowałem i go zepsułem a potem wpadłem na kolejny pomysł i z opublikowaniem kodu chciałem zaczekać az zacznie mi to działać. 

Stworzyłem coś takiego

Kod
<html>
<head>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>

<script type="text/javascript">    

    $(document).ready(
        function() {
            var scr_height = document.body.offsetHeight;
            
            $(document).scroll(
                function() {
                    $(".box img").each(
                        function(){
                            var pos =     document.body.scrollTop;
                            var suma = pos + document.body.clientHeight;
                            var p = $(this).offset();
                            var name = $(this).attr("name");
                            
                            if(p.top < suma && p.top+230 > pos)
                            {
                                document.images[name].src = name;
                                $("p").html("height: "+p.top + "pos: "+ pos + " suma: " +suma +" "+name);
                                
                            }
                            
                        }
                    );
                    
                }
            );
            
            $(".box img").each(
                function(){
                    var pos =     document.body.scrollTop;
                    var suma = pos + document.body.clientHeight;
                    var p = $(this).offset();
                    
                    var name = $(this).attr("name");
                    /*var img = new Image();
                    img.src = name;
                    var width = img.width;
                    var height = img.height;
                    $(this).width(width);
                    $(this).height(height);*/
                    
                    if(p.top < suma && p.top+230 > pos)
                    {
                        document.images[name].src = name;
                        $("p").html("height: ");
                    }
                    
                }
            );

        }
    );
    
    
</script>

<style type="text/css">


.box {
    margin : 20px 10px;
    float : left;
}

.box img{
border : 1px solid;
height : 230px;
width : 230px;

}

#frame {
    position:fixed;
    top : 10px;
    right : 10px;
    border-width : 2px;
    border-style:solid;
    width : 200px;
    color : #4b4b4b;
    
}

</style>

</head>
<body>

    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/135252gory4.jpg">
    </div>

    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/134306pp0067.jpg">
    </div>

    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/133853wo_scn08.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/minglown/kolorowe.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/181339grafika_92_tn.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/minglown/krajobrazy.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/minglown/owoce.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/pior_picture6pior.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/pior_picture5pior.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/pior_picture3pior.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/172015s6001200.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/182345piorun.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/181824dsc03330.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/180606p1110092+.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/170646widokju5.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/170111z945.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/1705085.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/014723tecza1.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/215918rozowa_kropelka.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/211004a040725waterdrop3769.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/21085910i.jpg">
    </div>
    
    <div class="box">
        <img src="" alt="" name="http://www.obrazki.info/miniatury/2108172.jpg">
    </div>
    
    


<div id="frame">
<p></p>
</div>

</body>
</html>



tu mozna zobaczyć jak to działa http://test.antimo.pl/images2.html


Jedyny problem jaki mam teraz to że skrypt nie do konca działa w ie6. Tzn mam wrazenie, że wczytuje on wszystkie obrazki już na starcie. Nie wiem jak jest w nowszych wersjach bo nie testowałem. Jeśli można to jakoś ulepszyć to proszę o porady smile.gif 

Ten post edytował czarek1986 13.07.2009, 14:15:41
Go to the top of the page
+Quote Post
erix
post 13.07.2009, 14:43:47
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




W IE6 chyba były inne własności od sprawdzania odległości.

Ale przecież korzystasz z jQuery, to masz metodę offset(), nie wynajduj koła na nowo. ;d


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
czarek1986
post 13.07.2009, 17:19:56
Post #16





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


I tak też robie, ale nie wiem czy jest w jquery tez metoda do pobierania pozycji scrolla której w tej chwili uzywam w tradycyjny sposob i prawdopodobnie przez to IE ma problemy z tym skryptem
Go to the top of the page
+Quote Post
erix
post 13.07.2009, 18:10:05
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jest, przecież został w jakiś sposób stworzony np. plugin scrollTo. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
czarek1986
post 14.07.2009, 10:55:11
Post #18





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


Ponawiam moje pytanie jak można zwiększyć wydajność mojego skryptu, np. poprzez ograniczenie ilości wywoływania zdarzenia scroll?? A może jest jakiś lepszy sposób na to?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 02:22