[英]typo3 fluid f:for is extreamly slow
在我的Typo3扩展程序中,我们使用<f:for
来迭代两个项目。 恰好184个项目。
我从中生成一个滑块。
问题在于此迭代速度极慢。 有没有一种方法可以加快速度。 后端速度不到一秒。 仅前端渲染需要很长时间。
我完整的前端代码如下所示:
<f:if condition="{videos -> f:count()} > 4">
<f:then>
<f:for each="{videos}" as="video" iteration="i">
<f:if condition="{i.isFirst}">
<f:then>
<div class="item active">
</f:then>
<f:else>
<div class="item">
</f:else>
</f:if>
<div class="col-lg-3 thumbnailParent">
<f:link.action controller="FrontendVideo" action="show" arguments="{video : video}">
<f:render partial="Video/ShowThumbnail" arguments="{video : video, userAuthorization : userAuthorization}"/>
</f:link.action>
</div>
<!-- adding slider-class to one of all slides. condition: slide must have more than 4 videos for slide-effect -->
<f:if condition="{i.isLast}">
<f:then>
<script type="text/javascript">
addClassForSliding('{myCarouselID}');
function addClassForSliding(myCarouselID) {
$("#myCarousel"+myCarouselID).addClass("isCarousel");
if(!$("div.videoSlide").find("div").hasClass("thisIsTheOnlySliderWhichSlides")){
$("#myCarousel"+myCarouselID).addClass("thisIsTheOnlySliderWhichSlides");
}
}
</script>
</f:then>
<f:else></f:else>
</f:if>
</div>
</f:for>
</f:then>
<f:else>
<f:for each="{videos}" as="video" iteration="i">
<div class="item active">
<div class="col-lg-3">
<f:link.action controller="FrontendVideo" action="show" arguments="{video : video}">
<f:render partial="Video/ShowThumbnail" arguments="{video : video, userAuthorization : userAuthorization}"/>
</f:link.action>
</div>
</div>
</f:for>
</f:else>
</f:if>
<f:else></f:else>
类的空节点。 iteration
变量。 它为每个迭代增加了额外的处理和变量分配。 active
CSS类,从而避免1)像您一样错误地打开和关闭标签,以及2)避免仅一次有效的另一种情况,例如另一种情况。 <script>
。 只要有可能,就从外部加载脚本并在脚本中存储所需的任何值,例如data-
属性。 更快的解析,更快的循环。 f:render
调用中需要完成的处理越多。 不要在开发环境中进行概要分析! 避免iteration
和您的条件,并将最后一个块移到循环外,应该可以节省80%的成本(不计算您渲染的部分中发生的事情-这在性能上绝对是可怕的,我们永远不会知道,因为您没有粘贴那个)。
最后,在选择是渲染部分片段还是部分片段时,需要考虑几件事。 其中大多数完全取决于您的用例(例如:您如何需要对模板进行结构化-与您无法覆盖的部分相比,可以覆盖的部分是否更有意义?),但是可以说一些笼统的内容性能:
您始终需要为任务选择正确的工具-这是我们作为开发人员要做的事情之一-因此,这些要点很通用。 有些用例在部分和部分之间的性能完全没有差异,而有些则不会因为使用iteration
而明显受苦; 这完全取决于您的设置要求和要呈现的数据。 对模板进行性能分析无疑有助于找到正确的解决方案,因此我强烈建议您这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.