我使用cefsharp(用于.NET铬嵌入式框架)来承载使用要求JS在大多数我的JavaScript模块加载Web应用程序。
为了加快我的申请我已经通过响应头启用cacheing“缓存控制:公众,最大年龄= 864000”为我所有的静态内容。
当我部署我的web应用程序我正在追加是获取与require.config的urlArgs PARAM每个部署递增一个版本号的新版本()执行一个“缓存萧条”时,我的内容变化需要JS不发送“如果-Modified-Since的”或“如果 - 无 - 匹配”请求标头,以便根据电子标签或最后修改日期浏览器未自动地检测我的变化。
这种“缓存无效”的解决方案完全在IE9,IE10,以及独立铬(35版目前)。 我的问题是cefsharp似乎完全无视我的缓存胸围查询字符串,并会还是去缓存时我改变查询字符串。 即使我追加一个完全不同的查询字符串,如时间戳(请参见下面的代码片段举例来说)它不拉下一个新的版本。
从我可以告诉这似乎是一个bug或者有可能,我无法在任何CEF或cefsharp找到配置设置,但我不能找到解决为什么CEF / cefsharp会无视我的查询字符串,并直接将缓存中的任何信息。
我已经运行小提琴手,并可以看到它时,我改变查询字符串cefsharp不作要求。 我也确实看到了查询字符串出现在初始加载(当我手动删除缓存文件夹,并重新加载)。
没有人有任何线索,为什么cefsharp会表现这样吗? 我曾经尝试都稳定的构建(使用铬25.x)以及预发布版本。 这两种行为相同。
CefSharp版本: https://github.com/cefsharp/CefSharp
需要JS网址ARGS代码片段:
(function () {
"use strict";
require.config({
waitSeconds: 200,
paths: {
//Removed for brevity
},
shim: {
//Removed for brevity
},
urlArgs: 'v=8.4.1.7',
//urlArgs: "bust=" + (new Date()).getTime() //(also tried this as a test, no luck)
});
})();
我在CefSharp(仅包括相关片)已经配置缓存设置:
Private WithEvents _webView As CefSharp.WinForms.WebView
Private WithEvents _rq As Object
Private Sub Initialize()
'Enable both applicaton and page cache settings (i have tried disableing application cache, did not help)
Dim settings = New BrowserSettings()
settings.ApplicationCacheDisabled = False
settings.PageCacheDisabled = False
settings.LocalStorageDisabled = False
Dim s = New CefSharp.Settings()
s.PackLoadingDisabled = True
s.CachePath = "SOME_USER_SPECIFIC_PATH" 'Removed the actual path building code
If CEF.IsInitialized = False Then
CEF.Initialize(s)
End If
_webView = New CefSharp.WinForms.WebView(_url, settings)
_rq = New RequestHandler
_webView.RequestHandler = _rq
_webView.Dock = DockStyle.Fill
_webView.Refresh()
_webView.Load(_url)
End Sub
任何人都可以提供任何建议,设置我应该尝试,解决方法等? 有一件事是不是真的我的选择是手动删除缓存文件夹上的每一个部署,由于我不会进入的原因。
任何帮助深表感谢。
谢谢