Про какой кеш вообще речь? Лучше скажите, что делаете, и в чем проблема.
Речь идёт про непрогруз страницы. Если один раз запросить респонс, а потом сразу повторить через новый прогруз, то он не прогружает заново, а просто приносит старое значение. Если 10 разных страниц прогрузить, а потом сразу повторить, то он затратит на это одно мгновение, т.к не грузит заново, а просто из кеша приносит. Гуглить подобное по "XMLHTTP not refreshing" (Хотя зависит от сайта тоже?, проверил на паре новых сайтов с онлайн временем и из конструктора - приносит обновленное значение, а вот старые сайты на старом хтмл, обычно один раз только грузит, потом ждать минут 30 или час). Итого 1. Проблема это обновить респонс (загрузить заново) невозможно, приходится ждать или менять функцию. 2. Нельзя сменить печеньку, он съедает одну, а потом вместо неё даёшь другую, а он респонс приносит от первой печеньки.
Цитата
5 способов ваших - вообще никак между собой не связаны
Они и не должны быть связаны, 5 отдельных разных способов.
Sub test_internet()
On Error Resume Next
URL$ = "http://ExcelVBA.ru/"
Const TIMEOUT& = 6 ' в секундах
Set whttp = CreateObject("WinHttp.WinHttpRequest.5.1")
whttp.Open "GET", URL$, True: DoEvents
whttp.Send: DoEvents
If Not whttp.WaitForResponse(TIMEOUT&) Then
MsgBox "timeout", URL: Exit Sub
End If
txt$ = whttp.responsetext
MsgBox txt, vbInformation, "Длина ответа: " & Len(txt)
End Sub
Public Enum IE_Cleaner_Flag
CLEAR_HISTORY = &H1 'Clears history
CLEAR_COOKIES = &H2 'Clears cookies
Clear_Cache = &H4 'Clears Temporary Internet Files folder
CLEAR_CACHE_ALL = &H8 'Clears offline favorites and download history
CLEAR_FORM_DATA = &H10 'Clears saved form data for form auto-fill-in
CLEAR_PASSWORDS = &H20 'Clears passwords saved for websites
CLEAR_PHISHING_FILTER = &H40 'Clears phishing filter data
CLEAR_RECOVERY_DATA = &H80 'Clears webpage recovery data
CLEAR_PRIVACY_ADVISOR = &H800 'Clears tracking data
CLEAR_SHOW_NO_GUI = &H100 'Do not show a GUI when running the cache clearing
CLEAR_USE_NO_THREAD = &H200 'Do not use multithreading for deletion
CLEAR_PRIVATE_CACHE = &H400 'Valid only when browser is in private browsing mode
CLEAR_DELETE_ALL = &H1000 'Deletes data stored by add-ons
CLEAR_PRESERVE_FAVORITES = &H2000 'Preserves cached data for "favorite" websites
CLEAR_CACHE_OPTIONS = &H9FF
End Enum
#If VBA7 Then
Private Declare PtrSafe Function InternetSetOption _
Lib "wininet.dll" _
Alias "InternetSetOptionA" ( _
ByVal hInternet As LongPtr, _
ByVal lOption As Long, _
ByRef lpBuffer As Any, _
ByVal lBufferLength As Long _
) As Long
#Else
Private Declare Function InternetSetOption _
Lib "wininet.dll" _
Alias "InternetSetOptionA" ( _
ByVal hInternet As Long, _
ByVal lOption As Long, _
ByRef lpBuffer As Any, _
ByVal lBufferLength As Long _
) As Long
#End If
Private Const INTERNET_OPTION_END_BROWSER_SESSION = &H2A
Public Sub ClearIE(Flag As IE_Cleaner_Flag)
Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess " & Flag
End Sub
Sub test()
ClearIE CLEAR_SHOW_NO_GUI Or CLEAR_HISTORY Or CLEAR_COOKIES Or CLEAR_CACHE_ALL
End Sub
Sub test2()
Dim lRet&
lRet = InternetSetOption(0, INTERNET_OPTION_END_BROWSER_SESSION, ByVal 0&, 0)
If lRet Then Debug.Print "Success"
End Sub
еще тут можно посмотреть использование других флагов для InternetSetOption
Андрей Лящук, test отлично сбросил печеньку при этом показал GUI, хотя флаг не-гуишный стоит
test2 печеньку не сбросил, но отрапортовал про success, Про кеш страниц - пока нет рабочего тестового url, на котором можно проверить сброс кеша при повторной загрузке (имеющиеся опытные образцы пока грузят не за 0,2 сек из кеша), как только подвернётся буду тестировать на нём
#If VBA7 Then
Private Declare PtrSafe Function InternetSetOption _
Lib "wininet.dll" _
Alias "InternetSetOptionA" ( _
ByVal hInternet As LongPtr, _
ByVal lOption As Long, _
ByRef lpBuffer As Any, _
ByVal lBufferLength As Long _
) As Long
#Else
Private Declare Function InternetSetOption _
Lib "wininet.dll" _
Alias "InternetSetOptionA" ( _
ByVal hInternet As Long, _
ByVal lOption As Long, _
ByRef lpBuffer As Any, _
ByVal lBufferLength As Long _
) As Long
#End If
Private Enum INTERNET_OPTION 'some of the option flags which used with the InternetQueryOption and InternetSetOption functions.
END_BROWSER_SESSION = &H2A 'Flushes entries not in use from the password cache on the hard disk drive.
'Also resets the cache time used when the synchronization mode is once-per-session.
'No buffer is required for this option. This is used by InternetSetOption.
RESET_URLCACHE_SESSION = &H3C 'Starts a new cache session for the process. No buffer is required.
'This is used by InternetSetOption. This option is reserved for internal use only.
SUPPRESS_BEHAVIOR = &H51 'A general purpose option that is used to suppress behaviors on a process-wide basis.
'The lpBuffer parameter of the function must be a pointer to a DWORD containing the specific
'behavior to suppress. This option cannot be queried with InternetQueryOption
End Enum
Private Enum INTERNET_SUPPRESS 'list of permitted values for InternetSetOption's INTERNET_OPTION_SUPPRESS_BEHAVIOR(&H51) option
RESET_ALL = 0 'Disables all suppressions, re-enabling default and configured behavior.
'This option is the equivalent of setting INTERNET_SUPPRESS_COOKIE_POLICY_RESET
'and INTERNET_SUPPRESS_COOKIE_PERSIST_RESET individually.
'Version: Requires Internet Explorer 6.0 or later.
COOKIE_POLICY = 1 'Ignores any configured cookie policies and allows cookies to be set.
'Version: Requires Internet Explorer 6.0 or later.
COOKIE_POLICY_RESET = 2 'Disables the INTERNET_SUPPRESS_COOKIE_POLICY suppression, permitting the evaluation
'of cookies according to the configured cookie policy.
'Version: Requires Internet Explorer 6.0 or later.
COOKIE_PERSIST = 3 'Suppresses the persistence of cookies, even if the server has specified them as persistent.
'Version: Requires Internet Explorer 8.0 or later.
COOKIE_PERSIST_RESET = 4 'Disables the INTERNET_SUPPRESS_COOKIE_PERSIST suppression, re-enabling the persistence
'of cookies. Any previously suppressed cookies will not become persistent.
End Enum
Sub test2()
Dim lRet&
lRet = InternetSetOption(0, INTERNET_OPTION.END_BROWSER_SESSION, ByVal 0&, 0) And _
InternetSetOption(0, INTERNET_OPTION.SUPPRESS_BEHAVIOR, INTERNET_SUPPRESS.COOKIE_PERSIST, 4) And _
InternetSetOption(0, INTERNET_OPTION.RESET_URLCACHE_SESSION, ByVal 0&, 0)
If lRet Then Debug.Print "Success"
End Sub
по поводу URLCACHE не уверен - из той ли оперы?...
по поводу URLCACHE не уверен - из той ли оперы?...
сильно похоже, что InternetSetOption вообще из своей личной оперы со своими dll-отдельно объявляемыми функциями (PostMethod.cls class in VB6) InternetOpen InternetOpenUrl HttpSendRequest HttpQueryInfo InternetConnect HttpOpenRequest