在我的Typo3扩展程序中,我们使用<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>
来迭代几个项目。完全184项。
我生成一个滑块。
问题是这次迭代极其缓慢。有没有办法加快速度。后端速度不到一秒。只有前端渲染需要很长时间。
我的完整前端代码如下所示:
<HashRouter>
<div className="App">
{/* Static section */}
<div>
<NavBar title="MyApp" />
</div>
{/* Dynamic section */}
<div>
<Route path="//" component={HomePage} />
<Route path="/market" component={MarketPage}/>
</div>
</div>
</HashRouter>
答案 0 :(得分:5)
<f:else></f:else>
这样的空节点。iteration
变量。它为每次迭代添加了额外的处理和变量赋值。active
CSS类,从而避免1)像你一样错误地打开和关闭标签,2)避免另一个条件,只有一次是真的,就像另一个一样。<script>
。只要有可能,在外部加载脚本并存储脚本所需的任何值,例如data-
属性。解析速度更快,循环更快。f:render
次调用中需要完成的处理越多。不要在开发环境中进行分析!避免iteration
和你的条件,并将最后一个块移到循环之外,应该消除80%的成本(不计算你渲染的部分内容会发生什么 - 它可能在性能上非常可怕,我们永远不知道,因为你没有粘贴那个)。
最后,在选择是呈现部分还是部分时,需要考虑几件事情。其中大部分完全取决于您的使用案例(如:您需要如何构建模板 - 使用部分覆盖而不是您不能的部分更有意义吗?)但是可以说一些关于性能:
您总是需要为任务选择合适的工具 - 这是我们作为开发人员的工作之一 - 因此这些要点非常通用。某些用例在部分和部分之间的性能上没有差异,有些使用iteration
不会明显受到影响;这一切都取决于您的设置要求和您正在渲染的数据。分析模板肯定有助于找到正确的解决方案,因此我强烈建议您这样做。