none
chtmlview::Navigate2不读缓存 RRS feed

  • 问题

  • 首先,我在网上看到过很多这样内容的文章,我不知道是不是回帖的人没试过还是什么原因,
    根据我看微软MSDN对dflag的定义是一个枚举
    typedef enum BrowserNavConstants {
        navOpenInNewWindow = 0x1,
        navNoHistory = 0x2,
        navNoReadFromCache = 0x4,
        navNoWriteToCache = 0x8,
        navAllowAutosearch = 0x10,
        navBrowserBar = 0x20,
        navHyperlink = 0x40,
        navEnforceRestricted = 0x80,
        navNewWindowsManaged = 0x0100,
        navUntrustedForDownload = 0x0200,
        navTrustedForActiveX = 0x0400,
        navOpenInNewTab = 0x0800,
        navOpenInBackgroundTab = 0x1000,
        navKeepWordWheelText = 0x2000,
        navVirtualTab = 0x4000,
        navBlockRedirectsXDomain = 0x8000,
        navOpenNewForegroundTab = 0x10000
    } BrowserNavConstants;

    Constants

    navOpenInNewWindow
    Open the resource or file in a new window.

    navNoHistory
    Do not add the resource or file to the history list. The new page replaces the current page in the list.

    navNoReadFromCache
    Not implemented.

    navNoWriteToCache
    Not implemented.

    navAllowAutosearch
    If the navigation fails, the autosearch functionality attempts to navigate common root domains (.com, .edu, and so on). If this also fails, the URL is passed to a search engine.

    navBrowserBar
    Causes the current Explorer Bar to navigate to the given item, if possible. 

    navHyperlink
    Microsoft Internet Explorer 6 for Windows XP Service Pack 2 (SP2) and later. If the navigation fails when a hyperlink is being followed, this constant specifies that the resource should then be bound to the moniker using the BINDF_HYPERLINK flag.

    navEnforceRestricted
    Internet Explorer 6 for Windows XP SP2 and later. Force the URL into the restricted zone.

    navNewWindowsManaged
    Internet Explorer 6 for Windows XP SP2 and later. Use the default Popup Manager to block pop-up windows. 

    navUntrustedForDownload
    Internet Explorer 6 for Windows XP SP2 and later. Block files that normally trigger a file download dialog box. 

    navTrustedForActiveX
    Internet Explorer 6 for Windows XP SP2 and later. Prompt for the installation of Microsoft ActiveX controls. 

    navOpenInNewTab
    Windows Internet Explorer 7. Open the resource or file in a new tab. Allow the destination window to come to the foreground, if necessary. 

    navOpenInBackgroundTab
    Internet Explorer 7. Open the resource or file in a new background tab; the currently active window and/or tab remains open on top. 

    navKeepWordWheelText
    Internet Explorer 7. Maintain state for dynamic navigation based on the filter string entered in the search band text box (wordwheel). Restore the wordwheel text when the navigation completes. 

    navVirtualTab
    Internet Explorer 8. Open the resource as a replacement for the current or target tab. The existing tab is closed while the new tab takes its place in the tab bar and replaces it in the tab group, if any. Browser history is copied forward to the new tab. On Windows Vista, this flag is implied if the navigation would cross integrity levels and navOpenInNewTab, navOpenInBackgroundTab, or navOpenInNewWindow is not specified. 

    navBlockRedirectsXDomain
    Internet Explorer 8. Block cross-domain redirect requests. The navigation triggers the DWebBrowserEvents2::RedirectXDomainBlocked event if blocked. 

    navOpenNewForegroundTab
    Internet Explorer 8 and later. Open the resource in a new tab that becomes the foreground tab.

    Enumerated Type Information

    Header Exdisp.h 
    Minimum availability Internet Explorer 4.0 
    Minimum operating systems Windows NT 4.0, Windows 95, Windows CE 2.12 

    这里面,我试过用2不写历史,用4不读缓存,都是会去读取缓存的,这是怎么回事,而且微软明确说4noreadfromchache未实现;
    有高手可以指点一下吗,我的目的是不要去缓存读取,要重新读取获取最新的html

    环境:WINXP SP3 + IE8.0 + VC++6.0 with SP6

    态度决定一切
    2009年11月12日 8:55

答案

  • 最简单的办法

    你在Navigate的 URL上加个随机参数  那么就一定不读缓存


    如果请求的是  http://www.csdn.com/XXX.aspx
    你就在后面加个时间参数 http://www.csdn.com/XXX.aspx?X=3567862131

    如果已经有了? 就 用&加

    保证每次的URL不同就可以了

    引自CSDN的一帖回复,已经实际验证过可行

    态度决定一切
    • 已标记为答案 Channie Liu 2009年11月18日 3:17
    2009年11月13日 1:32

全部回复

  • 补充一下,我的写法:

    Navigate2(sURL, 2, NULL);

    Navigate2(sURL, 4, NULL);

    都试过了,都是会去读取缓存

    态度决定一切
    2009年11月12日 9:02
  • navNoReadFromCache
    Not implemented.

    navNoWriteToCache
    Not implemented.

    为什么会这样?

    态度决定一切
    2009年11月12日 11:41
  • 以前支持过,现在不支持了
    你可以用WinInet函数自己去处理缓存


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年11月12日 19:04
    版主
  • 最简单的办法

    你在Navigate的 URL上加个随机参数  那么就一定不读缓存


    如果请求的是  http://www.csdn.com/XXX.aspx
    你就在后面加个时间参数 http://www.csdn.com/XXX.aspx?X=3567862131

    如果已经有了? 就 用&加

    保证每次的URL不同就可以了

    引自CSDN的一帖回复,已经实际验证过可行

    态度决定一切
    • 已标记为答案 Channie Liu 2009年11月18日 3:17
    2009年11月13日 1:32