使用多个p:graphicImage多次显示同一图像,而不使用多个HTTP请求

使用多个p:graphicImage多次显示同一图像,而不使用多个HTTP请求,image,jsf,primefaces,graphicimage,Image,Jsf,Primefaces,Graphicimage,我在我的XHTML页面中使用p:graphicImage标记,以小而大的方式显示相同的图像: <f:facet name="header">#{msgs.ATTR_PICTURE}</f:facet> <h:panelGroup> <p:graphicImage id="product_thumbnail" styleClass="thumbnail" cache="false" value="#{imageBean.st

我在我的XHTML页面中使用
p:graphicImage
标记,以小而大的方式显示相同的图像:

<f:facet name="header">#{msgs.ATTR_PICTURE}</f:facet>
<h:panelGroup>
    <p:graphicImage id="product_thumbnail" styleClass="thumbnail"
            cache="false" value="#{imageBean.streamedImageById}">
        <f:param name="productId" value="#{_product.id}" />
    </p:graphicImage>
    <p:tooltip id="imagebigger" for="product_thumbnail" position="right" showDelay="0" showEffect="blind" styleClass="tooltip_thumbnail">
        <p:graphicImage value="#{imageBean.streamedImageById}" styleClass="thumbnail_large" cache="false">
            <f:param name="productId" value="#{_product.id}" />
        </p:graphicImage>
    </p:tooltip>
</h:panelGroup>

{msgs.ATTR_PICTURE}


我想避免系统地为每个图像显示2个HTML请求。有没有办法避免这种情况?

您可以使用
属性并将其设置为
false

这将在base64中呈现图像,而不是呈现图像的URL。

我不建议这样做,因为标记将非常大,性能可能会差得多。

您可以使用
属性并将其设置为
false

这将在base64中呈现图像,而不是呈现图像的URL。

我不建议这样做,因为标记将非常大,性能可能会差得多。

我可以从第一个
p:graphicImage
中删除
cache=“false”
(默认为
true
)图像将在第一个
中检索(由
p:graphicImage
渲染)在客户端上,仅从客户端缓存中显示第二个,而不检索两次


cache=“false”
可能是因为您在评论中提到的原因而出现的,但这实际上是一个新问题,Stackoverflow中有几个Q/a,但哪一个最合适取决于用例的细节。你的新问题可能是重复的,也可能是新的有效问题本身。。。甚至可能在第一个
p:graphicImage
上返回
cache=“true”
,然后用其他东西替换第二个(甚至是一些纯客户端的“复制”,例如)可能是一个好方法。

I您可以从第一个
p:graphicImage
中删除
cache=“false”
(默认为
true
)在客户端的第一个
(由
p:graphicImage
渲染到)中检索图像,并仅从客户端缓存中显示第二个图像,而不检索两次


cache=“false"
可能是因为您在评论中提到的原因而出现的,但这实际上是一个新问题,Stackoverflow中有几个Q/a,但哪一个最合适取决于您的用例的细节。您的新问题可能是重复的,也可能是新的有效问题本身……甚至可能是在第一个
p:graphicImage
上返回
cache=“true
,然后用其他东西替换第二个可能是一个不错的方法(即使是一些纯客户端的“复制”,例如)。

我假设您尝试将
cache=“false”
更改为
cache=“true”“
?它没有帮助吗?hummm!cache=true正在解决2个html请求,但如果由于某些原因图像已更新,则在返回页面时,不会使用上次修改刷新页面。仅当页面已刷新时(F5)。我想知道是否可以为缓存设置一个持续时间。那么,您如何解决普通html/http中的这一矛盾?对……缓存超时,如您所建议的。因此,请查找有关此新问题的新问题。我将为此初始问题创建一个答案。我假设您尝试将
cache=“false”
更改为
cache=“true”
?它没有帮助吗?hummm!cache=true正在解决2个html请求,但如果由于某些原因图像已更新,则在返回页面时,不会使用上次修改刷新页面。仅当页面刷新时(F5)。我想知道是否可以为缓存设置一个持续时间。那么,您如何解决普通html/http中的这一矛盾?对……缓存超时,如您所建议的。因此,请寻找有关这一新问题的新问题。我将为这个初始问题创建一个答案。是的,当然;不需要额外的http请求。当然,不需要额外的http请求HTTP requestsit解决了单击同一页面->请求数除以2的问题。但是,当从另一个页面来时,我仍然可以看到相同数量的请求。它是链接的,因为我的Bean是SessionScope吗?谢谢你的回答。如果你对你提到的上一种方法有任何参考,我会感兴趣。it solv当点击同一页面->请求数除以2时,我会发现这个问题。但是当我从另一个页面来时,我仍然可以看到相同数量的请求。它是链接的,因为我的Bean是SessionScoped吗?谢谢你的回答。如果你有关于你提到的上一种方法的参考资料,我很感兴趣。