2016-11-10 3 views
0

Auf dieser Seite http://nashedom.ru gibt es JS-Skripte. Die meisten sind schnell.Long loading Javascript (modales Fenster)

Die modalka fancybox-Seiten (für Login-Benutzer, im Benutzerschrank, Seite объявления -> добавление объявления) sind sehr langsam. In Chrome ist das Laden 25-28 Sekunden. In Firefox - 2,5 Sekunden.

Die Daten werden aus dem Zusammenhang gerissen.

HTML:

{% load hosts %} 
<div class="b-header"> 
    <div class="b-header__menu"> 
     <div class="container"> 
      <div class="row"> 
       <div class="col-xs-12"> 
        <div class="b-menu"> 
         <a>...</a> 
         <a>...</a> 
         <a>...</a> 
         <a>...</a> 
         <span class="b-menu__item btn_change-location"> 
         <a href="#change-location" class="fancybox dashed"> 
         {% if user.is_authenticated %} 
          View ads on site: 
          {% if user.districts.all.count > 1 %} 
           {% for district in user.districts.all %} 
            {% if forloop.last %} 
             <span>{{ district }}</span> 
            {% else %} 
             <span>{{ district }},</span> 
            {% endif %} 
           {% endfor %} 
          {% else %} 
           {% for district in user.districts.all %} 
            <span>{{ district }}</span> 
           {% endfor %} 
          {% endif %} 
          {% if user.regions.all.count > 1 %} 
           {% for region in user.regions.all %} 
            {% if forloop.last %} 
             <span>{{ region }}</span> 
            {% else %} 
             <span>{{ region }},</span> 
            {% endif %} 
           {% endfor %} 
          {% else %} 
           {% for region in user.regions.all %} 
            <span>{{ region }}</span> 
           {% endfor %} 
          {% endif %} 
          {% if user.cities.all.count > 1 %} 
           {% for city in user.cities.all %} 
            {% if forloop.last %} 
             <span>{{ city }}</span> 
            {% else %} 
             <span>{{ city }},</span> 
            {% endif %} 
           {% endfor %} 
          {% else %} 
           {% for city in user.cities.all %} 
            <span>{{ city }}</span> 
           {% endfor %} 
          {% endif %} 
         {% else %} 
           View ads on site: 
         {% endif %} 

         </a> 
         </span> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 

Vorlagen modale Fenster

{% load hosts %} 
{% load widget_tweaks static %} 
<div id="change-location"> 
<form action="{% host_url "setlocation" host "www" %}" method="post"> 
    {% csrf_token %} 

    <div id="chose-city-wrap"> 
     <div class="b-modal__title">Select your city</div> 
     <p> 
      <div class="b-modal__item"> 
       <span>{{ location_form.country.label }}</span> 
       {{ location_form.country }} 
      </div> 
     </p> 
     <p> 
      <div class="b-modal__item"> 
       <span>{{ location_form.districts.label }}</span> 
       {{ location_form.districts }} 
      </div> 
     </p> 
     <p> 
      <div class="b-modal__item"> 
       <span>{{ location_form.regions.label }}</span> 
       {{ location_form.regions }} 
      </div> 
     </p> 
     <p> 
      <div class="b-modal__item"> 
       <span>{{ location_form.cities.label }}</span> 
       {{ location_form.cities }} 
      </div> 
     </p> 


     <br /> 

     <div class="b-modal__item b-modal__item_btn"> 
      <input class="b-btn b-btn_red" type="submit" value="Сохранить"> 
     </div> 
    </div> 
</form> 
</div> 

<!-- end snippet --> 

Städte Download-Formular auf der Seite, wo die Bremsen modale Fenster!

<fieldset> 
     <legend>The territory of distribution of the ads</legend> 

     {{ form.country|add_class:"b-input__input js-select" }} 
     {{ form.districts|add_class:"b-input__input js-select chosen-select" }} 
     {{ form.regions|add_class:"b-input__input js-select chosen-select" }} 
     {{ form.cities|add_class:"b-input__input js-select chosen-select" }} 
     {# form.geo|add_class:"b-input__input" #} 

    </fieldset> 

Antwort

0

Wie Sie es erklären, Sie haben eine Menge Daten zu erhalten (Länder, Städte), wenn Sie es in PHP zu tun, werden Sie die Seite sperren, bis Sie alle diese Daten retrive.

Um eine kürzere Ladezeit zu haben, müssen Sie nur alles in js (Ajax) machen.

Sie laden Ihre Seite mit den Städten, Ländern, ... ohne Daten.

Sobald die Seite geladen ist (document.ready), rufen Sie Ihre Ajax, um Ihre Städte, Länder und so weiter zu füllen.

+0

Vielen Dank! Aber ich kann Django benutzen. Aber ich versuche zu tun, was du sagst –

Verwandte Themen