[英]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.