دوستان سلام
من یه گالری تصاویر ساختم که این گالری بیش از 1000 عدد عکس رو توی خودش جا داده و زمانی که کوئری میزنم و تمام داده ها رو از mysql دریافت میکنم و میخوام به ازای هر عکس یک سری تگ ساخته شود ، متاسفانه مدت زمان زیادی طول میکشه تا تمام DOM Element ها بوسیله ی php رندر بشه و گاها مرورگر هنگ میکنه!
<img class="image" src="" xrs='<?php echo $gallery_item->file_name; ?>' />
مشکل اصلی ساخت DOM Element هایی هستند که بوسیله ی php ساخته میشوند و مدت زمان ساخت شون طول میکشه!
کسی تجربه ای داره در این مورد که چطور میشه این مشکل رو حل کرد؟
سلام
من الان یه همچین چیزی رو تست کردم. یه جدول به اسم گالری ساختم یه فیلد به اسم file_name داره و داخلش 1000 رکورد ایجاد کردم
یه فورایچ توی php گذاشتم و تگ های img رو توی صفحه ایجاد کردم
کل فرآیند کمتر از 200 میلی ثانیه زمان برد!
من فکر میکنم مشکل شما سمت واکشی اطلاعات از سمت دیتابیس هست . اگه تعداد رکوردهاتون زیاد هست دقت کنید که حتما ایندکس گذاری ها رو درست انجام داده باشید و اگه جدول گالریتون فیلد های زیادی داره فقط فیلد هایی رو بگیرید که توی این بخش نیاز دارید. شاید هم کانکشن دیتابیستون کند هست. چک کنید این موضوع رو هم . مثلا اگه دیتابیستون ریموت هست سرعت شبکه رو چک کنید
ممنونم بهزاد عزیز @behzad.azizan1991
آره دقیقا اصلا از طرف php نیست ، مشکل از جی اس ای هست مه روی تمام المنت ها میخواد اجرا بشه و در قسمت onload فراخونی میشه!
شما باید یه تعداد تصویر رو نمایش بدید مثلا ۲۰ تا..
سپس وقتی اسکرول زدی به پایین صفحه باید یه درخواست Ajax بزنی و ۲۰ تای بعدی (با Pagination) رو بگیری
نتیجه درخواست Ajax رو که گرفتی باید اون وقت ۲۰ تصویر جدید رو به DOM اضافه کنی..
چیزی شبیه کاری که اینستگرام و خیلی سرویس های دیگه انجام میدند..
واکشی ۱۰۰۰ رکورد از دیتابیس اصلا کار جالبی نیست
ممنونم علی جان، @ali.bayat
متاسفانه چون از Isotope js استفاده میکنم برای نمایش گالری بصورت ماسونری، امکان اینکه داده ها رو بصورت ajax بگیرم نیست و مجبور شدم که داده ها را بگیرم و فقط 20 تای اول رو نمایش بدم و متاسفانه Isptope روی گالری بیش از 1000 عکس درست جواب نمیده!
@nimageneral باز هم نباید مشکلی بوجود بیاد. حتما کدهای سمت جاوااسکریپتتون رو چک کنید
پیشنهاد میکنم برنامه رو یکبار دیگه اجرا کنید. اسکریپتی که وظیفه لیزی لود رو داره رو غیر فعال کنید. بعد صفحه رو اجرا کنید ببینید بازهم مرورگر هنگ میکنه یا نه. اگه هنگ نکرد مطمئن باشید از سمت جی اس مشکل دارید . اگه هنگ کرد مشکلتون سمت پی اچ پی هست و با دیباگ کردن مشکل رو پیدا کنید
اگه مشکل سمت کلاینت بود برنامه رو به همراه اسکریپت لیزی لودتون ران کنید. inspect elements رو باز کنید و برید تو سربرگ network . بدون اینکه اسکرول کنید ببینید چند تا رکوئست برای لود عکس میره سمت سرور.
طبق الگوریتمی که شما دارید بدون اسکرول باید یک عکس فقط لود بشه و هر بار که اسکرول میکنید باید تصاویر جدید لود بشن فقط.
در نهایت پیشنهاد میکنم از کتابخونه ی http://jquery.eisbehr.de/ استفاده کنید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟