在我的应用程序(*)中,我有时需要打开(在默认用户浏览器中)带有一些参数的URL。
在某些计算机上,我遇到了缓存问题,即使我发送了不同的参数,浏览器也会使用旧参数打开页面。
我尝试添加时间戳作为第一个参数:
但是,在某些计算机上它并没有解决问题。
我想知道使用友好的URL是否有助于避免所有用户,所有浏览器,所有默认设置等的缓存问题。
[我使用友好网址的来源:
你知道使用这种传递参数的方法有什么不利吗?
谢谢,
Atara。
(*)我的应用程序是一个exe文件(VB .Net) 应用程序的一个菜单选项是使用用户默认浏览器打开URL:
'-- Create temporary *.url file and open it
Try
Dim line1 As String = "[InternetShortcut]"
Dim line2 As String = "URL=" & sUrl
Dim dst As String = GetSystemPathTemp() & "myAppTemp.url"
Dim sw As New System.IO.StreamWriter(dst, False)
sw.WriteLine(line1)
sw.WriteLine(line2)
sw.Close()
System.Diagnostics.Process.Start(Chr(34) & dst & Chr(34))
URL是一个表单,参数是表单的一些字段,因此用户不必键入它们。
通常,用户填写表单并重定向到“谢谢”页面。
我的问题:下次用户点击菜单并打开URL \ form时,表单中应该有不同的字段值,根据当前的应用程序阶段,但是在某些计算机\用户\浏览器上有第一个URL缓存,然后,所有表单都填充初始字段,因此用户需要手动编辑它们(如果他注意到问题),否则我会得到表单结果与非准确信息 - 新用户注意到先前错误的字段值。
我的表单页面现在以 -
开头<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
直到今天,它始于以下所有选项 -
<?php
//disable all browser caching MUST BE FIRST LINES WITH NO PRECEEDING SPACES ETC
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
文件“myAppTemp.url”已更新,但浏览器会打开旧链接。
答案 0 :(得分:3)
解决缓存问题的URL不是可行的方法。 URL应该代表访问内容的方法,仅此而已。
最后,您永远无法完全解析客户端缓存,因为他们可以随心所欲。但是,有了一些敏感的标题,你就可以了。
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
答案 1 :(得分:0)
我认为你正在寻找错误的答案。如果查询字符串不同,客户端永远不会加载缓存数据,但是如果内容(具有链接的页面)被缓存,那么即使您希望参数已经更改,也会再次请求相同的数据。
如果您在pageload上动态生成网址,这可能会出现问题。一旦用户导航离开该页面,然后返回,它将在页面上具有相同的URL,因为该页面已被缓存。
编辑:
我认为您可以绕过.url文件的创建,因为Windows支持直接打开http链接,请阅读以下文章:http://support.microsoft.com/kb/305703
这样您至少可以消除问题的一个错误来源。