正如你们中的一些人可能已经知道的那样,Firefox/Chrome中存在一些由XmlHttpRequest对象发起的请求的缓存问题.这些问题意味着浏览器不严格遵循规则,也不会转到服务器获取新的XSLT文件(例如).响应没有Expires标头(出于性能原因我们无法使用它).
Firefox在XHR对象"通道"中有附加参数,您可以将值Component.interfaces.nsIRequest.LOAD_BYPASS_CACHE显式转到服务器.
Chrome存在类似的内容吗?
让我立即停止所有建议添加时间戳作为GET参数值或随机整数的人 - 我不希望服务器获得不同的URL请求.我希望它能获得原始网址.原因是我希望保护服务器免于获得太多不同的简单静态文件请求,并在不需要时向客户端发送过多数据.
如果使用生成的GET参数(如'?forcenew = 12314')命中静态文件,则每次第一次呈现200响应,对于该随机整数值的每个后续请求将呈现304.如果目标静态文件与客户端版本相同,我想发出始终返回304的请求.这就是网络浏览器应该如何开箱即用,但XHR对象往往不会去服务器来询问是否更改了文件.
我希望我的 findbugs 报告不显示以下错误:
DM_NUMBER_CTOR:方法调用低效的 Number 构造函数;使用静态 valueOf 代替
问题是这发生在 groovy 生成的代码文件中,所以我无法控制源代码 - 这就是为什么我想排除它并将其添加到我的排除过滤器中。
我不想显式添加类(因为我制作了许多工具都会使用的 API,所以我希望我的过滤器是通用的)。我不想按类型从报告中完全删除这个错误,我真的只想排除这个错误,如果它发生在“静态初始化程序”方法中。任何的想法?我尝试了下面的过滤器,但没有运气,也许有人有更好的主意?
<Match>
<Method name="~.*static initializer.*" />
<Bug pattern="DM_NUMBER_CTOR" />
</Match>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,这是 FindBugs 的“堆栈跟踪”:
在类 net.milanaleksic.cuc.tools.sound.SoundPlayerTool 在方法 net.milanaleksic.cuc.tools.sound.SoundPlayerTool.() 中调用方法 new Long(long) 应该调用 Long.valueOf(long) 而不是在 SoundPlayerTool.groovy