首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >会话变量不使用新的cfimage刷新

会话变量不使用新的cfimage刷新
EN

Stack Overflow用户
提问于 2011-09-10 01:29:21
回答 2查看 258关注 0票数 2

这里有一个奇怪的例子,至少对我来说是这样。我正在将图像读入cf image变量,并将其保存为session变量:

代码语言:javascript
复制
<cfimage action="read" source="myPath/image.jpg" name="myImage" />
<cfset session.image = #myImage# />

我计划在某个时刻操作该图像,这就是我将其保存到变量的原因。无论如何,然后我使用cfcontent进行流式传输:

代码语言:javascript
复制
<img id="photoPlaceholder" src="/#application.root_name#/administration/PhotoManagement/displayPhoto.cfm" width="500px" />

从模板displayPhoto.cfm:

代码语言:javascript
复制
<cfcontent  variable="#imageGetBlob(session.image)#" />

问题就在这里。在第一次调用之后,无论传递给它的是哪个新图像,都会显示第一个检索到的图像。我尝试在cfimage标记之前销毁会话变量,并且验证了每次都传递了正确的image变量。显示新图像的唯一方式是刷新页面。

在我看来,cfimage以某种方式缓存了图像,每次对它的新调用都不会刷新变量myImage。CF文档对此只字不提,google也什么也没提出来。

有什么想法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-10 01:33:54

您的问题可能是客户端的问题。由于img标记中的URL没有更改(...displayPhoto.cfm),因此浏览器看不到您实际上指向的是一个新图像,因此它继续提供缓存中已有的图像。

您可以尝试在src属性的末尾添加一个随机化的伪参数,如下所示:

代码语言:javascript
复制
<img id="photoPlaceholder" src="/#application.root_name#/administration/PhotoManagement/displayPhoto.cfm?somevar=#aUniqueValue#" width="500px" />

您可以从随机数生成器或时间戳生成器创建aUniqueValue变量。

票数 3
EN

Stack Overflow用户

发布于 2011-09-10 03:47:29

您还可以在displayPhoto.cfm中设置HTTP头,告诉浏览器不要缓存来自该URL的内容。从理论上讲,这可能会更好,否则浏览器将在缓存中保存图像,因为每次给它一个略有不同的URL。在缓存很大且不按站点划分的桌面上,这可能不是一个现实问题,但缓存有限的移动客户端可能会清除您希望缓存的其他内容。

如果图片很大或者相同的版本可能会加载很多,请查看HTTP头文件,否则上面的方法就可以了(我们在我工作的应用程序中都使用了这两种方法)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7365275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档