我现在正在使用asp.net(Dotnetnuke)项目。我需要动态地在页面中查找图像。在单击替换按钮(asp:Button)时,有时图像无法在页面上动态替换。按ctrl + F5,它会乱。我的问题是,如何通过c#代码重新加载缓存?
另一个问题是,有时我会通过将一些值存储到数据库来替换页面中的图像,然后按ctrl + F5在页面中进行更改。但是在单击ctrl + F5时会显示一个带有取消或重试按钮的对话框(点击firefox和ie)。点击其中任何一个都会将相同的值存储到database.if我们再次刷新页面,数据库中的值是3次。
答案 0 :(得分:2)
对不起,JavaScript无法访问为您转储缓存。 C#运行服务器,而不是客户端,所以它也无济于事。
如果要破坏页面中某些项目的缓存,可以添加随机参数
<img src="a.gif?x=123456">
(我喜欢使用时间戳)
或者,如果这是出于测试目的,请在浏览器中关闭缓存。
答案 1 :(得分:2)
你无法清除浏览器缓存。唯一的想法是在页面加载中用c#代码声明一个会话变量,并在第一次设置它的值为
if (!IsPostBack)
{
Session["refresh"]="1"
}
您需要在图片上传按钮事件中设置会话变量Session [“refresh”] =“1” 然后创建一个刷新按钮。在按钮事件中执行以下操作 那就是全部。在完成你的上传后,点击刷新按钮。然后它按ctrl + f5按钮工作。如果你没有在刷新按钮事件中设置会话值0,那么最后一个事件将再次发生。如果你在数据库中输入一个值,如果您没有设置会话变量0,则会执行相同的任务。
if(Session["refresh"].ToString()=="1")
{
Response.Write("<script type='text/javascript'>locaton.reload()</script>");
Session["refresh"]="0";
}
答案 2 :(得分:1)
您可以通过管理用户控件来操纵网页各个部分的缓存特性。另请检查您的页面指令。
<%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None" Shared="True | False" VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" %>
ASP.NET的缓存功能非常广泛。我建议你花点时间研究一下这个应用程序Directives;主要是页面和控制。