| title | IHttpCacheKey Interface |
|---|---|
| description | Learn how the IHttpCacheKey interface provides key information for corresponding data that is stored in a global cache. |
| ms.date | 10/07/2016 |
| ms.assetid | 5aee4c82-06de-08c4-ce8d-813dfcb8c506 |
| ms.custom | sfi-ropc-nochange |
Provides key information for corresponding data that is stored in a global cache.
class IHttpCacheKey | Topic | Description |
|---|---|
| Enum | Enumerates an IHttpCacheSpecificData pointer. |
| GetCacheName | Returns the unique name of the cache where a GL_CACHE_OPERATION event has occurred. |
| GetHash | Returns the unique hash code of an item in the global cache. |
| GetIsEqual | Returns a value indicating whether two IHttpCacheKey pointers are equivalent. |
| GetIsPrefix | Returns a value indicating whether two IHttpCacheKey pointers have the same prefix. |
| Name | Description |
|---|---|
| IFileKey | Represents key information for accessing associated data in the global file cache. |
| IHttpTokenKey | Represents key information for accessing associated data in the global token cache. |
| IUriKey | Represents key information for accessing associated data in the Uniform Resource Identifier (URI) cache. |
You can retrieve an IHttpCacheKey pointer from an ICacheProvider pointer by calling the ICacheProvider::GetCacheKey method.
The following code example demonstrates how to create a global module that listens for GL_CACHE_OPERATION and GL_CACHE_CLEANUP events and then writes the IHttpCacheKey information to the Event Viewer.
Caution
[!INCLUDEiisver] generates a large number of events in the Event Viewer. To avoid a log overflow error in a production environment, you should generally avoid writing cache information to the event log. For demonstration purposes, this code example writes an entry to the Event Viewer in debug mode only.
[!code-cppIHttpCacheKey#1]
The above code writes a new event to the Event Viewer, where the Data box contains XML similar to the following.
<cacheProvider>
<fileKey
path="C:\INETPUB\WWWROOT\IISSTART.HTM"
cacheName="FILE"
hash="59594512"
isEqual="true"
isPrefix="true"/>
</cacheProvider>
<cacheProvider>
<uriKey
siteId="1"
siteName=""
url="/IISSTART.HTM"
cacheName="URI"
hash="-1945651104"
isEqual="true"
isPrefix="true"/>
</cacheProvider>
<cacheProvider>
<tokenKey
userName="IUSR"
hashedPassword="abcdefg"
logon="3"
cacheName="TOKEN"
hash="0"
isEqual="true"
isPrefix="false"/>
</cacheProvider>
Your module must export the RegisterModule function. You can export this function by creating a module definition (.def) file for your project, or you can compile the module by using the /EXPORT:RegisterModule switch. For more information, see Walkthrough: Creating a Request-Level HTTP Module By Using Native Code.
You can optionally compile the code by using the __stdcall (/Gz) calling convention instead of explicitly declaring the calling convention for each function.
IHttpCacheKey
| Type | Description |
|---|---|
| Client | - IIS 7.0 on [!INCLUDEwinvista] - IIS 7.5 on Windows 7 - IIS 8.0 on Windows 8 - IIS 10.0 on Windows 10 |
| Server | - IIS 7.0 on [!INCLUDEwinsrv2008] - IIS 7.5 on Windows Server 2008 R2 - IIS 8.0 on Windows Server 2012 - IIS 8.5 on Windows Server 2012 R2 - IIS 10.0 on Windows Server 2016 |
| Product | - IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0 - [!INCLUDEiisexp75], [!INCLUDEiisexp80], [!INCLUDEiisexp100] |
| Header | Httpserv.h |