您好,我有一个网络项目正在托管,问题是一个特定页面加载非常慢。原因可能是我猜测的Jquery代码,我在其中遍历了超过1200个讲座。我通常展示所有讲座并通过搜索进行过滤,然后我认为如果我什么都不显示,只有当有人搜索时才显示它会更快,但是仍然很慢。这是我的html。谢谢您的帮助。
html
{% extends "base.html" %}
{%block content%}
{% load crispy_forms_tags %}
<div class="container"><h1 style="text-align:center;">Not Dağılımları</h1>
<hr>
</div>
<div class="container">
<div class="form-group pull-right">
<input type="text" class="search form-control" placeholder="Ara">
</div>
<span class="counter pull-right"></span>
<table style="background-color:white;"class="table table-hover results">
<thead>
<tr>
<th >Hoca</th>
<th>Fakülte</th>
<th >Ders</th>
</tr>
<tr class="warning no-result">
<td><i class="fa fa-warning"></i> Sonuç Yok</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<script></script>
{% endblock content%}
编辑 这是我的演讲者模型。
class Lecturer(models.Model):
lecturer=models.CharField(max_length=128,blank=False)
lecture=models.ManyToManyField(Lecture,blank=True)
faculty=models.ForeignKey('Department', on_delete=models.CASCADE, related_name='department_for_lecturer')
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
self.slug = self.slug or slugify(self.lecturer)
super().save(*args, **kwargs)
def get_lectures(self):
return ",".join([str(p) for p in self.lecture.all()])
def __str__(self):
return self.lecturer
class Meta:
ordering = ['lecturer']
views.py
class Index(generic.ListView):
template_name='home.html'
models=Lecturer
queryset = Lecturer.objects.all()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context ['lecturer_list'] = Lecturer.objects.order_by('lecturer')
return context
Lecture
模型和视图,这很可能是著名的N+1问题。 - Willem Van Onsemlec.lecture.all
,lec.lecturer
和lec.faculty
应该进行优化。我也不确定为什么需要JavaScript来处理它。例如,如果您想使表格更具动态性,则最好呈现表格,并让JavaScript处理表格。如果负载真的太大而无法获取“页面”,则使用AJAX查询可能更好。但是1,200并不多,所以我认为这些在这里不是必要的。 - Willem Van Onsemlec.lecturer
是从哪里得来的(以及lec.faculty
和lec.lecture.all
呢?这些在您的模型中并未出现,但很可能会导致效率低下。您能添加对应的模型/关系吗? - Willem Van Onsem