递减缓存数据的生存时间 (TTL) 设置。
语法
virtual VOID DecrementTTL(
OUT BOOL* pfTTLExpired
) = 0;
parameters
pfTTLExpired
[OUT] true
指示 TTL 计数已达到 0;否则为 false
。
线程安全性
实现 IHttpCacheSpecificData 接口的类对于 和 ResetTTL 方法是DecrementTTL
线程安全的。
备注
参数 pfTTLExpired
不得为 NULL;否则, DecrementTTL
方法将导致某些实现中的访问冲突。
TTL 设置指定缓存数据何时不再有效,因此何时应重新加载该数据。 大多数 IHttpCacheSpecificData
实现将初始内部计数设置为正值,然后允许通过连续调用 DecrementTTL
方法减少该计数。 如果 TTL 值变为 0,则应重新加载数据。
的行为 DecrementTTL
特定于实现。 应将以下信息用作指南,但并非所有方案都正确:
实现
IHttpCacheSpecificData
或 IHttpTokenEntry 接口的类在构造时将内部计数初始化为 2,并在每次调用DecrementTTL
时将计数递减 1。实现 IHttpFileInfo 接口的类是不同的。 某些类实现上面定义的方案,而其他类则对
ResetTTL
和DecrementTTL
方法执行空操作。
实现者须知
DecrementTTL
和 ResetTTL
方法实现对于指针来说必须是线程安全的IHttpCacheSpecificData
。
对调用者的说明
大多数调用方可能会忽略 DecrementTTL
方法,因为此方法旨在内部使用。
示例
下面的代码示例演示了一个名为 MySpecificData
的类,该 IHttpCacheSpecificData
类实现了 方法。
class MySpecificData : public IHttpCacheSpecificData
{
public:
MySpecificData()
{
m_ttl = 2;
}
virtual ~MySpecificData()
{
m_ttl = 0;
}
virtual VOID ResetTTL(VOID)
{
m_ttl = 2;
}
virtual VOID DecrementTTL(BOOL* pfTTLExpired)
{
*pfTTLExpired = (InterlockedDecrement(&m_ttl) == 0);
}
private:
LONG m_ttl;
};
要求
类型 | 说明 |
---|---|
客户端 | - Windows Vista 上的 IIS 7.0 - Windows 7 上的 IIS 7.5 - Windows 8 上的 IIS 8.0 - Windows 10 上的 IIS 10.0 |
服务器 | - Windows Server 2008 上的 IIS 7.0 - Windows Server 2008 R2 上的 IIS 7.5 - Windows Server 2012 上的 IIS 8.0 - Windows Server 2012 R2 上的 IIS 8.5 - Windows Server 2016 上的 IIS 10.0 |
产品 | - IIS 7.0、IIS 7.5、IIS 8.0、IIS 8.5、IIS 10.0 - IIS Express 7.5、IIS Express 8.0、IIS Express 10.0 |
Header | Httpserv.h |