0

我创建了一个桌面应用程序,它不断更改固定路径和固定文件名 00.jpg 上的图像。该图像位于我的网站文件夹的路径中。该图像由 浏览器查看。但是图像在浏览器上并没有不断变化。

我尝试同时使用客户端(javascript)和服务器(asp.net)计时器,但没有结果。这是我的 ASP.net AJAX 计时器代码和标记:

<form id="form1" runat="server">
    <div>
        <asp:ScriptManager runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="up1" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <asp:Image ImageUrl="00.jpg" ID="img1" runat="server" />
            <asp:Timer ID="Timer1" runat="server" Interval="100" ontick="Timer1_Tick"></asp:Timer>
        </ContentTemplate>
        <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>
        </asp:UpdatePanel>            
    </div>
</form>

protected void Timer1_Tick(object sender, EventArgs e)
{
    string xx = Request.Url.AbsoluteUri;
    xx = xx.Replace ("Default.aspx","00.jpg");
    img1.ImageUrl = xx; up1.Update();
}
4

2 回答 2

1

我怀疑图像上的缓存问题。也许尝试禁用此图像上的缓存,或使用以下命令构建唯一的 url:

protected void Timer1_Tick(object sender, EventArgs e)
{
    img1.ImageUrl = Page.ResolveUrl("~/00.jpg?x=" + DateTime.Now.Ticks.ToString()); 
    up1.Update();
}

但实际上,您应该考虑使用纯 javascript(如果需要,可以使用 jQuery 或类似的)解决方案。这将避免服务器往返。

这篇文章通过解决方案准确解释了您的需求。

于 2012-06-15T08:12:31.927 回答
0

UpdatePanel 在与服务器通信时使用大量开销;因此,如果可能,请摆脱 ScriptManager 和 UpdatePanel 并改用 JQuery。您可以有一个简单的 <img> 标记并让 JQuery 更新图像。

如果您能够以某种方式更改图像的文件名(例如,在文件名的末尾添加日期+时间),那么您不必做任何特殊的事情来克服缓存问题,您可以简单地更新 src图片。

例如。http://www.phpfreaks.com/forums/index.php?topic=253852.0https://www.google.com/search?btnG=1&pws=0&q=jquery+img

于 2012-06-15T08:18:17.267 回答