我有一個使用GET請求的API提供圖像的servlet。該servlet基於GET請求的參數創建CAD命令的數據文件。這個數據文件然後被傳送到一個圖像解析器,它在文件系統上創建一個圖像。該servlet讀取圖像並返回響應中的字節。使用Java進行動態圖像緩存
所有的IO和圖像解析器程序的調用可能是非常重要的,大約80kb的圖像在本地系統上以3-4000ms渲染。
大約有20個參數組成GET請求。每個都與圖像的不同部分相關。所以,可能的圖像組合非常大。
爲了減輕加載時間,我計劃將呈現圖像的BLOB存儲在數據庫中。如果GET請求與先前執行的請求匹配,我將從緩存中取出。否則,我會渲染一個新的。這不能解決「第一次」運行,但會幫助「n + 1運行」。
有關我如何提高性能的其他想法?
如何使用wget並通過腳本獲取預加載的圖像,然後在第一次請求進入時使用這些圖像?您還可以運行調度程序以定期作爲異步進程調用wget。 – dinukadev
這也是我的第一本能。但是,需要的圖像數量非常巨大。我不確定確切的金額,但絕對大於1噸並不斷擴大。 –
我最終通過哈希碼對圖像進行索引,並使用調度程序將大量常用圖像自動預緩存到數據庫中。到目前爲止,表現還在持續。 –