首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用友好URL避免缓存问题

使用友好URL避免缓存问题
EN

Stack Overflow用户
提问于 2011-06-29 14:07:41
回答 2查看 1.6K关注 0票数 0

在我的应用程序(*)中,我有时需要打开一个带有一些参数的URL (在默认的用户浏览器中)。

例如:http://www.mySite.com/myPage.php?p1=param1&p2=param2&p3=param3

在一些计算机上,我遇到了缓存问题,即使发送不同的参数,浏览器也用旧参数打开页面。

我尝试添加时间戳作为第一个参数:

例如:http://www.mySite.com/myPage.php?pXXX=XXX&p1=param1&p2=param2&p3=param3

  • where XXX = Now.ToString("ssmmHHddMMyy")

但是,在一些电脑上,它并没有解决这个问题。

我想知道使用友好的URL是否有助于避免所有用户、所有浏览器、所有默认设置等的缓存问题。

例如:http://www.mySite.com/myFalsePage/param1/param2/param3

[我使用友好URL的来源:

  • http://techie-buzz.com/how-to/create-seo-friendly-urls-using-mod-rewrite-and-php-part-1.html
  • http://techie-buzz.com/tips-and-tricks/create-seo-friendly-urls-with-mod-rewrite-and-php-part-ii.html

]

您知道使用这种传递参数的方法有什么优点吗?

谢谢,

阿塔拉。

(*)我的应用程序是一个exe文件(VB .Net),应用程序的菜单选项之一是使用用户默认浏览器打开URL:

代码语言:javascript
复制
 '-- 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 \表单时,根据当前的应用程序阶段,表单中应该有不同的字段值,但在某些计算机\ user \browsers上,第一个URL被缓存,然后所有表单都填充了初始字段,因此用户需要手动编辑它们(如果他注意到了问题),否则我就会得到带有不准确信息的表单结果--新用户记录上一个错误字段的值。

我的表格页现在是从-

代码语言:javascript
复制
<?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

直到今天,它从以下所有选项开始-

代码语言:javascript
复制
<?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“被更新,但浏览器打开旧的链接。

EN

回答 2

Stack Overflow用户

发布于 2011-06-29 14:10:15

解决缓存问题的URL不是解决方法。URL应该表示一个访问内容的方法,仅此而已。

最后,您将永远无法完全解决客户端缓存问题,因为他们可以做他们想做的任何事情。但是,有了一些耸人听闻的标题,你就会很好。

代码语言:javascript
复制
<?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
?>

来自:http://php.net/manual/en/function.header.php

票数 3
EN

Stack Overflow用户

发布于 2011-07-04 10:40:48

我想你找错答案了。如果查询字符串不同,客户端将永远不会加载缓存的数据,但是,如果缓存内容(具有链接的页面),那么您将再次请求相同的数据,即使您期望参数已经更改。

如果您在页面上动态生成urls,这可能是一个问题。一旦用户离开该页面,然后返回,它将在页面上具有相同的url,因为该页面是缓存的。

编辑:

我认为您可以绕过.url文件的创建,因为windows支持直接打开http链接,请阅读本文:http://support.microsoft.com/kb/305703

这样,您至少可以消除问题的一个错误源。

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

https://stackoverflow.com/questions/6521978

复制
相关文章

相似问题

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