簡體   English   中英

Symfony 2資產,檢查文件是否存在性能

[英]Symfony 2 asset, check if file exists performance

在symfony 2上,使用Twig可以使用asset()函數以一種方式鏈接圖像
{{ asset('path_to_the_image') }} ,現在,如果文件不存在,則文件的src保持不變,

考慮到這一點,我很想在TwigExtensions上創建另一個Twig函數,以檢查文件是否存在,以執行以下操作:如果文件存在,則將使用給定的url,如果不存在,則將將函數的結果更改為默認圖像,該圖像將用作not_image圖像。 此功能的動機是始終向用戶顯示圖像。

現在,我的問題。

我無法弄清楚這種方法的性能問題,因為我將檢查文件兩次,第一次是檢查文件是否存在,而第二次是請求文件的請求。 通常要做的是放置資產地址,如果文件不存在,則使用javascript將其替換為某些默認文件。

我將使用php的file_exists函數,並且在手冊上我讀到它非常便宜,並且在文件確實存在的情況下,結果將被緩存以避免性能問題。

提前致謝...

file_exists觸發對文件系統(或什至只是FS元數據)的讀取訪問。 這確實非常便宜。 請記住,在運行Symfony應用程序時,通常只需要訪問數百個PHP文件。

確實緩存了file_exists的結果,但僅在腳本執行期間才緩存。 因此,如果您在一次腳本執行中多次調用file_exists (並且在兩次腳本之間不調用clearstatcache ),則結果將被緩存。 如果稍后再次調用該腳本,PHP將再次查找該文件。


但是,如果您真的擔心性能,則不要“即時”檢查文件是否存在,而應創建一個Symfony命令,該命令檢查所有鏈接資產在構建或部署期間是否有效。

該命令基本上將呈現所有頁面,並且您的自定義資產函數將拋出異常,而不是返回虛擬圖像。 這樣,您只需在部署期間檢查一次所有資產是否有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM