如何清除应用程序承载 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 。 计算机中缓存将被清除。
目录
相关文章
|
2月前
|
缓存 NoSQL Java
Redis深度解析:解锁高性能缓存的终极武器,让你的应用飞起来
【8月更文挑战第29天】本文从基本概念入手,通过实战示例、原理解析和高级使用技巧,全面讲解Redis这一高性能键值对数据库。Redis基于内存存储,支持多种数据结构,如字符串、列表和哈希表等,常用于数据库、缓存及消息队列。文中详细介绍了如何在Spring Boot项目中集成Redis,并展示了其工作原理、缓存实现方法及高级特性,如事务、发布/订阅、Lua脚本和集群等,帮助读者从入门到精通Redis,大幅提升应用性能与可扩展性。
63 0
|
10天前
|
缓存 移动开发 前端开发
HTML5 应用程序缓存详解
HTML5 应用程序缓存(Application Cache)通过缓存 HTML、JavaScript、CSS 和图像等资源,使 Web 应用能在离线状态下运行。它利用 Manifest 文件(`.appcache`)定义缓存资源列表,浏览器会在加载页面时下载并缓存这些资源。此外,应用程序缓存还提供了事件处理机制,允许开发者监控缓存状态并进行手动管理。尽管这一技术已被视为过时,建议使用 Service Workers 和 Cache API 等现代替代方案来实现更强大的离线功能和缓存控制。
|
19天前
|
机器学习/深度学习 缓存 NoSQL
深度学习在图像识别中的应用与挑战后端开发中的数据缓存策略
本文深入探讨了深度学习技术在图像识别领域的应用,包括卷积神经网络(CNN)的原理、常见模型如ResNet和VGG的介绍,以及这些模型在实际应用中的表现。同时,文章也讨论了数据增强、模型集成等改进性能的方法,并指出了当前面临的计算资源需求高、数据隐私等挑战。通过综合分析,本文旨在为深度学习在图像识别中的进一步研究和应用提供参考。 本文探讨了后端开发中数据缓存的重要性和实现方法,通过具体案例解析Redis在实际应用中的使用。首先介绍了缓存的基本概念及其在后端系统性能优化中的作用;接着详细讲解了Redis的常见数据类型和应用场景;最后通过一个实际项目展示了如何在Django框架中集成Redis,
|
1月前
|
缓存 JavaScript 中间件
优化Express.js应用程序性能:缓存策略、请求压缩和路由匹配
在开发Express.js应用时,采用合理的缓存策略、请求压缩及优化路由匹配可大幅提升性能。本文介绍如何利用`express.static`实现缓存、`compression`中间件压缩响应数据,并通过精确匹配、模块化路由及参数化路由提高路由处理效率,从而打造高效应用。
84 5
|
4天前
|
存储 缓存 NoSQL
构建高性能Web应用:缓存的重要性及其实现
构建高性能Web应用:缓存的重要性及其实现
|
1月前
|
存储 缓存 前端开发
缓存技术在软件开发中的应用与优化策略
缓存技术在软件开发中的应用与优化策略
|
2月前
|
缓存 算法 前端开发
深入理解缓存淘汰策略:LRU和LFU算法的解析与应用
【8月更文挑战第25天】在计算机科学领域,高效管理资源对于提升系统性能至关重要。内存缓存作为一种加速数据读取的有效方法,其管理策略直接影响整体性能。本文重点介绍两种常用的缓存淘汰算法:LRU(最近最少使用)和LFU(最不经常使用)。LRU算法依据数据最近是否被访问来进行淘汰决策;而LFU算法则根据数据的访问频率做出判断。这两种算法各有特点,适用于不同的应用场景。通过深入分析这两种算法的原理、实现方式及适用场景,本文旨在帮助开发者更好地理解缓存管理机制,从而在实际应用中作出更合理的选择,有效提升系统性能和用户体验。
113 1
|
2月前
|
开发工具 Android开发 iOS开发
从零开始学 Xamarin 开发,新手教程全攻略,安装环境、创建项目、设计界面,轻松开启开发之旅!
【8月更文挑战第31天】Xamarin是一种高效的跨平台移动应用开发工具,迎合了日益增长的移动应用需求。本文为Xamarin新手提供了一套详尽的入门指南,涵盖开发环境搭建、项目创建与配置、用户界面设计及功能实现等关键步骤。通过具体示例,帮助初学者快速上手Xamarin开发,开启移动应用创作之旅。
38 0
|
2月前
|
存储 缓存 NoSQL
【性能飙升的秘密】FastAPI应用如何借助缓存技术实现极速响应?揭秘高效Web开发的制胜法宝!
【8月更文挑战第31天】FastAPI是一个高性能Web框架,利用Starlette和Pydantic实现高效API构建。本文介绍如何通过缓存提升FastAPI应用性能,包括使用`starlette-cache[redis]`实现Redis缓存,以及缓存一致性和缓存策略的注意事项。通过具体示例展示了缓存的配置与应用,帮助开发者构建更高效的Web应用。
101 0
|
2月前
|
缓存 数据库 UED
【性能翻倍的秘密】Rails高手从不告诉你的缓存技巧,竟让应用瞬间提速,背后真相令人震惊!
【8月更文挑战第31天】缓存是提升Web应用性能的关键技术,Ruby on Rails内置了多种缓存机制,如页面缓存、动作缓存、片段缓存及数据库查询缓存,可显著减少数据库查询次数并加快页面加载速度。本文通过具体案例分析了这些缓存策略,并提供了示例代码,展示如何在实际应用中实施这些策略,帮助开发者提升用户体验。
41 0