1

我在 Delphi 7 中使用 TWebBrowser 组件。使用 TWebBrowser 我正在检索我自己放置在服务器上的 HTML 文件。我不希望用户轻松找到 HTML 文件的副本。目前,通过 TWebBrowser 通过 Internet 检索到的所有文件都存储在通过 Microsoft 的 Internet Explorer > 工具设置配置的临时文件文件夹中。我不喜欢这样,因为不需要火箭科学家就可以在那里寻找下载文件的副本。

令我惊讶的是,尽管我的 HTML 文件在该<HEAD></HEAD>部分中有以下几行,但这些文件仍存储在 Temporary files 文件夹中:

<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="-1" />

我确实注意到,如果 HTML 文件是本地的,即在临时文件夹之外并且没有通过 Internet 检索,则 IE/TWebBrowser 不会将副本存储在临时文件夹中。

我想我要问的是,我的 META 标签是否有问题,或者这些标签对 TWebBrowser 如何处理远程检索的文件没有影响?

任何解决方案,除了必须使用 INDY HTTP 组件来获取文件,然后从用户驱动器上的隐藏文件夹加载它们?

4

4 回答 4

0

告诉浏览器不要缓存,例如使用Cache-Control: no-cache指令,只是告诉它不要在后续请求中重用缓存的数据,而是每次都必须从服务器重新请求数据。它没有说明在本地缓存文件以进行离线浏览等。

顺便说一句,我更喜欢使用Cache-Control: no-cacheHTTP 标头而不是在元标记中指定它,因为 HTTP 标头可以被代理以及服务器和浏览器之间的其他缓存机制识别并传递。

相反,请查看Cache-Control: no-storeandprivate指令,它告诉 Web 浏览器和任何共享缓存机制(例如代理)不要存储数据。

但是请注意,您可以帮助保护用户的数据,但不能保护他们免受自身的影响。有一些注册表设置允许用户覆盖 IE 中的“no-store”指令。

也许内存解决方案会更好。

于 2013-09-14T23:59:08.220 回答
0

我无法评论为什么<meta>没有生效。但我可以说TWebBrowser.Navigate()andTWebBrowser.Navigate2()方法都有一个Flags参数。您可以指定navNoWriteToCache标志以防止将检索到的数据保存到缓存中。

于 2013-09-13T19:56:16.973 回答
0

提供NavNoReadFromCacheNavigate方法作为第二个参数。

procedure TForm1.Button1Click(Sender: TObject);
var
  Flags: OLEVariant;

begin
  Flags:=4; //NavNoReadFromCache
  WebBrowser1.Navigate('http://www.example.com', Flags);
end;
于 2016-04-07T05:53:18.207 回答
-1

Browser.EnableCaching:=False; 浏览器。导航;

于 2019-04-29T15:18:50.217 回答