我正在研究需要搜索表單上的自動填充字段的應用程序。該應用程序是在Railo 3.3上的CFML。我使用jQuery UI自動完成,並已實施了服務器端的像這樣的查詢:查詢緩存以提供動力jQuery自動完成
private struct function getStationDetails(required numeric uic)
{
var qryCacheStations = new query();
var qryStations = new query();
var cacheData = "";
var resultData = "";
var stcResult = {};
qryCacheStations.setDatasource(variables.instance['dataSource']);
qryCacheStations.setSQL("select distinct uic, name, crs from stations order by name");
qryCacheStations.setCachedwithin(createTimeSpan(1,0,0,0));
cacheData = qryCacheStations.execute().getResult();
qryStations.setDBType("query");
qryStations.setAttributes(srcTbl = cacheData);
qryStations.setSQL("select name, crs from srcTbl where uic = :uic");
qryStations.addParam(name="uic",value=arguments.uic,CFSQLType="CF_SQL_INTEGER");
resultData = qryStations.execute().getResult();
stcResult = {
name = resultData['name'][1],
crs = resultData['crs'][1]
}
return stcResult;
}
基本上我加載整個電臺列表進入第一個查找的緩存,搭配1天到期(數據很少發生變化),然後使用查詢查詢將相關結果返回給客戶端。
我的問題很簡單,這種積極的緩存和QoQs技術是一種很好的模式嗎?性能看起來不錯,內存佔用也是合理的(數據集很小),所以它'感覺'很好,但我正在尋找那些以前可能嘗試過並發現問題的人的任何建議?
任何想法將非常感激。
我想你釘了:)。我一直使用這個。 –
確實Railo有cachePut()和cacheGet()嗎?可能會更靈活,然後Cachedwithin在刷新緩存的時候 – Henry
@Henry - 它確實有cachePut()和cacheGet()。我將這些緩存函數與EHCache一起用於其他類型的數據,但查詢緩存非常適合直接DB緩存。此外,Railo還支持 標記,允許您在需要時刷新查詢緩存。 –