如何清除应用程序承载 WebBrowser 控件时缓存

简介: 原文:如何清除应用程序承载 WebBrowser 控件时缓存http://support.microsoft.com/kb/262110/zh-cn察看本文应用于的产品 function loadTOCNode(){} 注意:这篇文章是由无人工介入的自动的机器翻译系统翻译完成。
原文: 如何清除应用程序承载 WebBrowser 控件时缓存

注意:这篇文章是由无人工介入的自动的机器翻译系统翻译完成。这些文章是微软为不懂英语的用户提供的, 以使他们能够理解这些文章的内容。微软不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的使用所引起的任何直接的, 或间接的可能的问题负责。
文章编号 : 262110
最后修改 : 2007年3月29日
修订 : 3.1

概要

当应用程序承载 WebBrowser 控件, 可能需要以编程方式清除缓存。 通过 WebBrowser 控件的接口没有此功能。 本文解释如何使用 WinInet API 函数以直接清除缓存。

回到顶端

更多信息

使用 WinInet API FindFirstURLCacheEntry 来找到第一缓存条目和 FindNextUrlCacheEntry 用于列举缓存。 使用 DeleteUrlCacheEntry 来删除每个条目。

注意 FindFirstUrlCacheGroup DeleteUrlCacheGroup FindNextUrlCacheGroup, 以及正在使用下例中。 这些 API 函数以便正确检查作为显示需要防止错误有只成为用 Internet Explorer 5。

在下面步骤介绍如何在 VisualBasic 中使用 WinInet API 来清除缓存中所有文件。

1. 新建一个 VisualBasic 标准 EXE 项目。
2. 创建 form 1 下一个命令按钮。
3. 以下代码粘贴到模块是 form 1:
Option Explicit
            Private Declare Function FindFirstUrlCacheGroup Lib "wininet.dll" ( _
            ByVal dwFlags As Long, _
            ByVal dwFilter As Long, _
            ByRef lpSearchCondition As Long, _
            ByVal dwSearchCondition As Long, _
            ByRef lpGroupId As Date, _
            ByRef lpReserved As Long) As Long
            Private Declare Function FindNextUrlCacheGroup Lib "wininet.dll" ( _
            ByVal hFind As Long, _
            ByRef lpGroupId As Date, _
            ByRef lpReserved As Long) As Long
            Private Declare Function DeleteUrlCacheGroup Lib "wininet.dll" ( _
            ByVal sGroupID As Date, _
            ByVal dwFlags As Long, _
            ByRef lpReserved As Long) As Long
            Private Declare Function FindFirstUrlCacheEntry Lib "wininet.dll" Alias "FindFirstUrlCacheEntryA" ( _
            ByVal lpszUrlSearchPattern As String, _
            ByRef lpFirstCacheEntryInfo As INTERNET_CACHE_ENTRY_INFO, _
            ByRef lpdwFirstCacheEntryInfoBufferSize As Long) As Long
            Private Type INTERNET_CACHE_ENTRY_INFO
            dwStructSize As Long
            szRestOfData(1024) As Long
            End Type
            Private Declare Function DeleteUrlCacheEntry Lib "wininet.dll" Alias "DeleteUrlCacheEntryA" ( _
            ByVal lpszUrlName As Long) As Long
            Private Declare Function FindNextUrlCacheEntry Lib "wininet.dll" Alias "FindNextUrlCacheEntryA" ( _
            ByVal hEnumHandle As Long, _
            ByRef lpNextCacheEntryInfo As INTERNET_CACHE_ENTRY_INFO, _
            ByRef lpdwNextCacheEntryInfoBufferSize As Long) As Long
            Private Const CACHGROUP_SEARCH_ALL = &H0
            Private Const ERROR_NO_MORE_FILES = 18
            Private Const ERROR_NO_MORE_ITEMS = 259
            Private Const CACHEGROUP_FLAG_FLUSHURL_ONDELETE = &H2
            Private Const BUFFERSIZE = 2048
            Private Sub Command1_Click()
            Dim sGroupID As Date
            Dim hGroup As Long
            Dim hFile As Long
            Dim sEntryInfo As INTERNET_CACHE_ENTRY_INFO
            Dim iSize As Long
            On Error Resume Next
            ' Delete the groups
            hGroup = FindFirstUrlCacheGroup(0, 0, 0, 0, sGroupID, 0)
            ' To avoid error using it with IE4 as FindFirstUrlCacheGroup is not implemented
            If Err.Number <> 453 Then
            If (hGroup = 0) And (Err.LastDllError <> 2) Then
            MsgBox "An error occurred enumerating the cache groups" & Err.LastDllError
            Exit Sub
            End If
            Else
            Err.Clear
            End If
            If (hGroup <> 0) Then
            'we succeeded in finding the first cache group.. enumerate and
            'delete
            Do
            If (0 = DeleteUrlCacheGroup(sGroupID, CACHEGROUP_FLAG_FLUSHURL_ONDELETE, 0)) Then
            ' To avoid error using it with IE4 as FindFirstUrlCacheGroup is not implemented
            If Err.Number <> 453 Then
            MsgBox "Error deleting cache group " & Err.LastDllError
            Exit Sub
            Else
            Err.Clear
            End If
            End If
            iSize = BUFFERSIZE
            If (0 = FindNextUrlCacheGroup(hGroup, sGroupID, iSize)) And (Err.LastDllError <> 2) Then
            MsgBox "Error finding next url cache group! - " & Err.LastDllError
            End If
            Loop Until Err.LastDllError = 2
            End If
            ' Delete the files
            sEntryInfo.dwStructSize = 80
            iSize = BUFFERSIZE
            hFile = FindFirstUrlCacheEntry(0, sEntryInfo, iSize)
            If (hFile = 0) Then
            If (Err.LastDllError = ERROR_NO_MORE_ITEMS) Then
            GoTo done
            End If
            MsgBox "ERROR: FindFirstUrlCacheEntry - " & Err.LastDllError
            Exit Sub
            End If
            Do
            If (0 = DeleteUrlCacheEntry(sEntryInfo.szRestOfData(0))) _
            And (Err.LastDllError <> 2) Then
            Err.Clear
            End If
            iSize = BUFFERSIZE
            If (0 = FindNextUrlCacheEntry(hFile, sEntryInfo, iSize)) And (Err.LastDllError <> ERROR_NO_MORE_ITEMS) Then
            MsgBox "Error:  Unable to find the next cache entry - " & Err.LastDllError
            Exit Sub
            End If
            Loop Until Err.LastDllError = ERROR_NO_MORE_ITEMS
            done:
            MsgBox "cache cleared"
            Command1.Enabled = True
            End Sub
            
4. 运行项目并单击 Command 。 计算机中缓存将被清除。
目录
相关文章
|
1月前
|
缓存 NoSQL Java
在 Spring Boot 应用中使用 Spring Cache 和 Redis 实现数据查询的缓存功能
在 Spring Boot 应用中使用 Spring Cache 和 Redis 实现数据查询的缓存功能
69 0
|
22天前
|
缓存 NoSQL Java
实现Java应用的智能缓存管理策略
实现Java应用的智能缓存管理策略
|
7天前
|
存储 缓存 NoSQL
深入理解分布式缓存在后端系统中的应用与实践
【7月更文挑战第20天】 本文将探讨分布式缓存技术在后端系统设计中的关键角色,并揭示其如何优化性能和扩展性。文章不仅剖析了分布式缓存的基本原理和工作机制,而且提供了实际案例分析,展示了其在处理大规模数据时的优势。我们将深入了解几种流行的分布式缓存解决方案,并讨论它们在不同场景下的适用性。最后,文章将指导读者如何在真实世界的应用中实施分布式缓存,包括架构设计、性能调优以及故障排除的最佳实践。
|
7天前
|
存储 缓存 NoSQL
深入理解分布式缓存在现代后端系统中的应用与挑战
随着互联网技术的飞速发展,分布式缓存已成为提升后端系统性能的关键技术之一。本文将从数据导向和科学严谨的角度出发,探讨分布式缓存技术的原理、应用场景以及面临的主要挑战。通过对具体案例的分析和数据统计,我们旨在为读者提供一个全面而深入的理解框架,帮助开发者更好地设计和优化后端系统。 【7月更文挑战第20天】
12 0
|
1月前
|
缓存 NoSQL Java
案例 采用Springboot默认的缓存方案Simple在三层架构中完成一个手机验证码生成校验的程序
案例 采用Springboot默认的缓存方案Simple在三层架构中完成一个手机验证码生成校验的程序
70 5
|
1月前
|
存储 缓存 NoSQL
经验大分享:OHCJava堆外缓存详解与应用
经验大分享:OHCJava堆外缓存详解与应用
12 1
|
1月前
|
存储 缓存 NoSQL
在应用中使用缓存服务
【6月更文挑战第24天】本文介绍redis缓存的基本知识和使用。Redis超越简单的键值存储,Redis查询直接针对键,不支持复杂查询,适合特定场景的高性能缓存。用于减少数据库交互,优化性能。并提供练习源码查阅。
68 1
|
16天前
|
设计模式 存储 缓存
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
21 0
|
24天前
|
缓存
鸿蒙实现获取应用缓存和清理缓存
鸿蒙实现获取应用缓存和清理缓存
67 0
|
2月前
|
缓存 监控 中间件
中间件Cache-Aside策略应用程序直接与缓存和数据库进行交互
【5月更文挑战第8天】中间件Cache-Aside策略应用程序直接与缓存和数据库进行交互
41 4