【问题标题】:firefox not picking latest css in application using framesFirefox 没有使用框架在应用程序中选择最新的 css
【发布时间】:2012-10-27 22:13:09
【问题描述】:

我正在开发一个使用框架的企业应用程序。我们对 javascript 和 css 文件进行了几处更改,以增强现有功能。

我知道浏览器会缓存这两个东西,所以为了克服这些问题,我们包括 css 和 javscript 文件以包含版本信息,例如

<script language="javascript" src="21225/scripts/common_ui_enu.js?v=1"></script>
<link href="files/bootstrap.css?v=2" rel="stylesheet"/>

这种技术似乎适用于除 Firefox 之外的所有其他浏览器。 即使在清除缓存后(即使使用 ctrl + F5)也不会拾取最新的 CSS。 我正在使用 Firefox 16.0.2 版进行测试。

确保 Firefox 为框架应用程序拾取最新的 css 文件的最佳方法是什么?

编辑

版本控制技术可能很旧,但它确实有效。我发现的问题是 CSS 中存在语法错误,其中一个规则背景 URL 缺少圆括号。

Firefox 出于某种原因在此之后忽略了所有其他 css 规则。修复 CSS 后,Firefox 也开始根据包含 URL 中提供的版本获取更改。

【问题讨论】:

  • 你是每次改JS都改v参数,还是打印HTML时随机生成?
  • 每次更改 js 或 css 时我都会手动更改(这不是很常见)

标签: javascript css firefox caching


【解决方案1】:

使用查询参数是一种非常老式的防止缓存的方法,并且在 HTTP 1.1 上不可靠。看看使用适当的缓存头:expires 等。

【讨论】:

  • 这是一个企业应用程序,因此我无法完全控制生成的 HTTP 标头。这可以通过页面中的元标记来完成吗?如果可能的话,请提供一个相同的例子吗?
  • @user1017268:“这是一个企业应用程序,所以我无法完全控制生成的 HTTP 标头” 为什么不呢?这应该是任何体面的企业应用程序都可以让您控制的东西。 “这可以通过页面中的元标记来完成吗?” 可以:&lt;meta http-equiv="expires" content="...."&gt;。更多:w3.org/TR/html5/the-meta-element.html#the-meta-element
  • 如果我在 http-equiv 标签中提供了一个静态的过期日期(例如:2012 年 10 月 20 日),那么每次访问页面后都会请求所有的 css、javascript 文件提供的日期(20 日之后)?
  • @user1017268:您为 CSS 文件指定的到期日期对 JS 文件的缓存具有完全的影响。在提供静态日期方面:这就是您使用适当服务器的原因,因为任何半体面的服务器都可以配置为根据请求资源的时间发送expires 标头(例如,“此资源对日/周/月/年/十年/纪元”)。
  • 我想在这种情况下我很不走运,因为这个应用程序没有为我提供这种能力。还有其他方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 2018-05-17
相关资源
最近更新 更多