0
我有一個包含數百萬個項目的數據庫。這些項目可通過網絡界面導出。客戶可以用佔位符指定一個模板(字符串),以便如何導出數據。解析後的模板包含循環的HTTP HTTP響應
由於數據集非常大,我無法在模板上進行簡單的搜索/替換並將結果作爲響應發送,因爲這會消耗我的記憶。所以我通過Transfer-Encoding傳輸響應:分塊。
模板可能看起來像這樣:
Some static content at the beginning …
[foreach item]{item.id} {item.name}[/foreach]
Some static content in between the loops …
[foreach item]{item.id} {item.value}[/foreach]
Some static content at the end …
我怎麼能流這個順序?如果只有一個foreach循環,我可以簡單地將流式處理分爲三個階段:
- 在循環逐行之前對內容進行流式傳輸。
- 遍歷循環並逐行傳送每個項目。
- 循環逐行後的內容流。
但是,模板可能包含0..n個foreach循環(基於相同的項目列表)。是否有正則表達式提取所有循環和它們之間的內容,所以我可以遍歷它們?