IHttpCacheSpecificData::D ecrementTTL 方法

递减缓存数据的生存时间 (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 特定于实现。 应将以下信息用作指南,但并非所有方案都正确:

  • 实现 IHttpCacheSpecificDataIHttpTokenEntry 接口的类在构造时将内部计数初始化为 2,并在每次调用 DecrementTTL时将计数递减 1。

  • 实现 IHttpFileInfo 接口的类是不同的。 某些类实现上面定义的方案,而其他类则对 ResetTTLDecrementTTL 方法执行空操作。

实现者须知

DecrementTTLResetTTL 方法实现对于指针来说必须是线程安全的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

另请参阅

IHttpCacheSpecificData 接口