gpt4 book ai didi

c# - 从旧 URL 重定向到最新已知 URL 的好方法

转载 作者:行者123 更新时间:2023-11-29 22:05:01 25 4
gpt4 key购买 nike

我有一个大量使用 javascript 并与 .NET C# RPC 服务对话的网站。我们遇到了客户浏览器缓存 javascript 的问题,因此我们最终决定将版本号附加到 URL 以强制他们使用最新的 javascript,从而解决缓存问题。因此,对于每个新版本,我们都必须使用新的虚拟路径在 IIS 中创建一个新的应用程序/虚拟文件夹。例如:

http://example.com/websiteVersion10

我们在根目录下有一个 C# web 应用程序,它将请求从基本 URL 重定向到正确的最新版本,因此如果有人输入 http://example.com , 他们会被重定向到 http://example.com/latestwebsiteversion .该应用程序使用自定义 XML 配置文件来读取我们在每次发布时更新的最新版本。

但是我们发现客户会将完整的“重定向到”URL 添加为书签,而不是键入 http://example.com当 URL 由于我们发布了新版本而过时时,除非我们在 IIS 中保留旧的虚拟路径,否则他们将开始收到 404 错误页面。

现在避免这种情况的一种方法是将所有旧的虚拟路径保留在 IIS 中,并在每个过时的网站中放置一个重定向页面以重定向到最新版本,但我们确实经常发布,所以我知道我们最终会加载大量虚拟和物理过时的文件夹很快。

我尝试使用自定义 404 错误页面从那里重定向回最新版本,方法如下:

if(OLD_URLs){
Response.StatusCode = 200;
Response.Redirect(LATEST_URL);
}

但这不起作用,而是显示一个空白页面。

有没有比在 IIS 中维护所有旧虚拟路径来实现此目的更简洁的解决方案?

最佳答案

如果我没理解错的话,您是在创建虚拟目录以确保提供最新的 javascript 文件吗?

您应该知道,通过将新的查询字符串变量附加到每个新版本的脚本引用,您将执行缓存清除,浏览器将下载最新版本:

<script type="text/javascript" src="myscript.js?v=1"></script>

如果更新查询字符串变量,myscript.js 将再次重新下载,而不管缓存中有什么:

<script type="text/javascript" src="myscript.js?v=2"></script>

根据您使用的 ASP.Net 版本,您可以在使用 bundle 时免费获得它。捆绑您所有的 CSS 和脚本,将您的网站设置为 Release模式,ASP.Net 会将缓存破坏查询字符串附加到您的引用中。

引用:http://www.dotnet-tricks.com/Tutorial/mvc/c72b040113-Asp.net-MVC-4-performance-optimization-with-bundling-and-minification.html

关于c# - 从旧 URL 重定向到最新已知 URL 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21479962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com