【问题标题】:caching pictures in JSF page在 JSF 页面中缓存图片
【发布时间】:2012-07-08 01:37:00
【问题描述】:

从事一些 JSF 2.0 项目。有为新/现有用户添加图片的表格。不刷新页面(*.xhtml)就看不到新添加的图片。我试着把常规:

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

但这没有帮助。

如何禁用页面缓存?

【问题讨论】:

  • 请发布您的 xhtml 文件。这里重要的不是浏览器缓存。添加新图片后,您需要更新显示图像的组件。
  • 用于显示我正在使用 HTML &lt;img src=""&gt; 标记的图像...
  • 好的,但它仍然无助于了解添加新图片后如何更新图像。
  • 我有这个代码:&lt;object data="#{userBean.resourceUrl}/#{o.pic}.png" id="UserPictureThumb_${o.userID}" width="72" height="72"&gt;&lt;img src="resources/images/AddUserImg-Icon.png" width="72" height="72" /&gt;&lt;/object&gt; 并且我正在使用具有相同名称的不同图片更改&lt;object&gt; 的源(数据)。没有 ctrl+F5 不会刷新。

标签: html caching jsf-2


【解决方案1】:

当通过 HTTP 提供页面时,HTML &lt;meta http-equiv&gt; 标记将被忽略&lt;meta http-equiv&gt; 标签只有在页面被最终用户保存到本地磁盘文件系统,然后通过file:// URL 从它打开时才会被解释。

您需要在 real HTTP 响应中设置这些标头。最简单的方法是使用servlet filter,基本上可以

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);

(注意你原来的Cache-Control标头不完整,上面的例子是正确的用法)

您可以将其映射到特定页面的 URL 模式上,但您也可以考虑将其映射到 JSF 生成的所有动态页面上。

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 2016-03-02
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2014-01-24
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多