我想过使用类似的元标记:
<meta http-equiv="Pragma" CONTENT="no-cache">
会根据http://www.4guysfromrolla.com/webtech/111500-1.shtml
自动刷新我的网页然而我的页面并不令人耳目一新!
我正在做的是从具有活动列的数据库表中动态加载复选框到是否最初检查它,还有一个onclick事件处理程序,它采取行动客户端(在另一个div标签中仅显示活动那些)。单击提交按钮时,操作将指向另一个(经典)asp页面并保存更改(活动状态)服务器端,但是,当我单击浏览器中的后退按钮时,必须将服务器端代码调用为动态设置复选框具有正确的状态,但是当我切换复选框时调用的客户端与我离开时的值不同,而是在首次加载页面时的值,所以我认为自动刷新页面是通过没有缓存。我想这不是IE友好的,或者我做错了。
请不要询问URL,因为它是内部网站。您需要我发送多少代码?
单击后退按钮后,下面的屏幕截图显示非悬停和悬停状态作为一张图片连接。为了解释这种情况,顶部图像只显示一个活动收件人。底部图像显示2。 过程是: 我最初只有一个收件人后选择另一个收件人。 我点击一个提交按钮。 它将第二个收件人保存到数据库中。 我单击浏览器上的“后退”按钮。 活动收件人列表仍然只显示一个用户。 如果我进入编辑模式(将鼠标悬停在我的绿色标签上),则会显示2个收件人。
这怎么可能?仅活动(非悬停)和完整列表都是服务器端加载的!
答案 0 :(得分:0)
我在这里看了很多关于堆栈溢出的帖子,谈到了关于检测后退按钮的类似主题,我没有特别想让第一个定时器很复杂到这个代码看起来很复杂但是,然后我想起@DaveNorm提到调用document.refresh()的事实,所以我决定调用我自己的客户端函数,它实际上是在onload事件中更新活动状态的工作,它工作,所以我会去那个。
答案 1 :(得分:0)
该行不会自动刷新您的页面,只会阻止Internet浏览器缓存内容,这会强制它从Web服务器请求最新版本的页面。
就我个人而言,我不喜欢使用客户端标签来处理缓存,更喜欢使用像我这样可以在ASP页面顶部调用的函数来设置服务器端的头部。
<%
Sub no_cache()
Dim Str: Str = "private, no-cache, must-revalidate"
Response.ExpiresAbsolute = DateAdd("yyyy", -5, Date())
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-control", Str
End Sub
%>
然后我可以在#include
中使用任意页面中的一行来调用它。我不想通过Internet浏览器缓存它。
<%
Call no_cache()
%>
window.location.reload(true);
强制刷新而不使用客户端缓存。 < / LI>