App Level Cache 是一種存活週期與應用程式相同的快取機制。目前 ToolGUI 並不打算提供相關的 API,主要考量是:
Package 使用者自主性: App Level Cache 的實作相對簡單,且細節眾多,交由 Package 使用者自行處理,更能符合專案的特定需求。
ToolGUI 設計理念: ToolGUI 將應用程式的控制權交給使用者,讓使用者能更靈活地管理應用程式狀態,包括快取機制。這與 Streamlit 直接執行 Script,需要提供較多內建功能的設計理念有所不同。
例如:
type MyApp struct {
data sync.Map // 使用 sync.Map 儲存快取資料
}
func (app *MyApp) QueryData(key string) interface{} {
if v, ok := app.data.Load(key); ok {
return v
}
// 計算新的值
val := calculateValue(key)
// 將新值儲存到快取
app.data.Store(key, val)
return val
}
func (app *MyApp) Page1(...) {
tgcomp.Text(app.QueryData(...))
}
App Level Cache 的更多考量:
使用者可以根據上述示例,設計出符合自身需求的快取機制。