我们有一个分析图表,它首先查询数据库日志表,从优化查询中提取所有相关信息,只选择所需内容以及获取相关的开始和结束ID,因为此表有数百万条记录.拉出初始查询后,我们使用ColdFusion查询查询来处理该数据以显示不同的图表.
您可以在此示例中看到实际的外部数据库调用在31ms内抓取2,240条记录:
qryGetLogs (Datasource=ourDSN, Time=31ms, Records=2204)
Run Code Online (Sandbox Code Playgroud)
我们有一个图表,显示每周每天的每小时视图,然后构建一个jQuery图表来显示它们.从最初的设计来看,这些查询的执行时间几乎可以忽略不计,最常见的是0ms.因为我们在每天(24)中每小时循环一次,每周7天,这是168次查询 - 这是多次不进行外部数据库调用的主要原因之一.
现在看来,许多(但不是全部)查询查询的运行时间比初始数据库调用长100多倍.他们中的大多数人都使用BETWEEN日期范围功能来选择每天和每小时部分的记录:
qryViewsPerHour (Datasource=, Time=4312ms, Records=5)
SELECT createdOn, DayOfWeek
FROM qryGetLogs
WHERE (CreatedOn BETWEEN '2012-09-03 0:00:00' AND '2012-09-03 0:59:59')
AND (DayOfWeek = 2)
Run Code Online (Sandbox Code Playgroud)
您可以看到另一个查询的查询花了4,312ms并且正在搜索具有2,240条记录的查询.以下是许多下一个查询的查询时间:
qryViewsPerHour (Datasource=, Time=4610ms, Records=5)
qryViewsPerHour (Datasource=, Time=4187ms, Records=8)
qryViewsPerHour (Datasource=, Time=5062ms, Records=6)
qryViewsPerHour (Datasource=, Time=3985ms, Records=0)
qryViewsPerHour (Datasource=, Time=4828ms, Records=2)
qryViewsPerHour (Datasource=, Time=5750ms, Records=0)
qryViewsPerHour (Datasource=, Time=3016ms, Records=4)
qryViewsPerHour (Datasource=, Time=3625ms, Records=6)
qryViewsPerHour (Datasource=, Time=6265ms, Records=11)
Run Code Online (Sandbox Code Playgroud)
所以你可以看到这些查询,它增加了40秒的加载时间!但请注意,下一个查询只有78毫秒,记录比以前的任何查询都多,之后很多,时间更好:
qryViewsPerHour (Datasource=, Time=78ms, Records=18)
qryViewsPerHour (Datasource=, Time=62ms, Records=7)
qryViewsPerHour (Datasource=, Time=63ms, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 ColdFusion 的hmac()函数来计算 HMAC 值,binaryEncode(binaryObj,'Base64')而不是使用toBase64(),因为该函数已被弃用。它toBase64()与binaryEncode(). 这些文档的信息量不是很大。有人可以帮助我理解为什么我不能使用 获得相同的价值binaryEncode吗?
据我了解,该hmac()函数以十六进制格式返回结果。binaryEncode()期望一个二进制值,因此hmac()必须先将结果从十六进制转换为二进制,然后才能将其转换为 base64。
<cfset string = "1234567890" />
<cfset secretKey = "abcdefghijklmnopqrstuvwxyz" />
<!--- Get Hex results from HMAC() --->
<cfset hmacHex = hmac(string,secretKey,'HMACSHA256') />
<!--- Decode the binary value from hex --->
<cfset hmacAsBinary = binaryDecode(hmacHex,'hex') />
<!--- Convert binary object to Base64 --->
<cfset hmacBase64 = binaryEncode(hmacAsBinary, 'base64') />
<cfoutput>
<!--- incorrect hmac signature …Run Code Online (Sandbox Code Playgroud)