【问题标题】:How to refresh ASPX page and Javascript code that has been cached by proxy service如何刷新已被代理服务缓存的 ASPX 页面和 Javascript 代码
【发布时间】:2018-04-26 18:47:59
【问题描述】:

问题

最近,我在生产环境中部署了一个包含 javascript 的页面,该页面使用 setInterval() 每隔几秒 ping 一次 Web 服务。行为可以总结如下:

每隔 X 秒,即将到来的Events.aspx 页面上的 Javascript 调用 hitWebService() 函数,该函数位于 hitWebService.js 文件中。

X 间隔值集被证明太小,因此,我删除了对 hitWebService()、hitWebService.js 文件本身以及它试图访问的 Web 服务的所有引用。

尝试从普通 IP 地址访问 Web 服务的次数下降了,但我仍然收到许多使用代理服务的用户的尝试。

我的理论是我的即将到来的Events.aspx 和 hitWebService.js 已被代理服务缓存。实际上,当我在用户点击错误页面时记录引荐来源字符串时(这些用户中的一个经常会被重定向到这里),他们是从即将到来的Events.aspx 引荐的。

问题在于,访问此 Web 服务的尝试正在以令人不快的速度填满 IIS 日志,并在服务器上造成不必要的流量。

我的尝试

  • 完全移除网络服务
  • 删除 hitWebService.js 文件,也将其替换为虚拟文件
  • 更改了 IIS 上的内容过期时间,以便内容立即过期
  • 将 Response.Cache.SetCacheability(HttpCacheability.NoCache) 添加到页面上的 .vb 代码隐藏
  • 完全重新发布的网站并进行了更改
  • 重新启动 IIS,停止并启动 IIS。

有趣的部分

  • 我可以更改 UpcomingEvents.apsx 上的 vb 代码隐藏以记录会话详细信息等,对于代理服务用户来说,它似乎几乎可以立即更新

问题

如果我的理论是正确的,并且代理服务器确实缓存了这些文件 hitWebService.js 和即将到来的Events.aspx,考虑到上述策略还没有,我是否可以通过其他途径强制刷新代码工作了吗?

非常感谢,

【问题讨论】:

    标签: javascript asp.net caching iis proxy


    【解决方案1】:

    就我而言,我有一个 ajax 调用开始由 asp.net 缓存。我使用了带有 javascript 日期编号的参数,因此每个调用都有不同的查询字符串。

    像这样:

    function addQueryStringAntiCache(url)
    {
        var d = new Date();
        var n = d.getTime();
        return url + (url.indexOf("?") == -1 ? "?" : "&") + "nocache=" + n;
    }
    

    你可以对脚本做同样的事情:

    <script src="myScript.js?v=8912398314812" />
    

    如果您可以访问机器,请使用 fiddle 检查浏览器甚至调用以获取文件,或者它是否使用自己的缓存。在这种情况下,您可以尝试包含 metaData 或 http Header 以防止它缓存它。 Check this response

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 2015-07-16
      • 2011-07-30
      相关资源
      最近更新 更多