• 浏览器的刷新原理


          今晚在做一个商品筛选的功能,通过几十个商品参数筛选商品列表,因为参数太多,外加考虑到SEO的部分,所以我不想在地址栏暴漏参数传递的部分,所以就采用了POST传值的方式来解决,但是POST传值就面临着用户刷新页面的时候总是提示是否重新POST的对话框,用搜索引擎搜了一下,目前市面上最常见的几种解决方法都测试过,但是都不适合我的情况.最后我尝试使用js在客户端延时重新给action赋值随机数,甚至用js延时动态创建form表单的方式都测试过,依然无法解决问题,偶尔看到一篇文章才明白原因.不敢藏私分享给大家.

         众所周知浏览器是通过Last-Modified和Expires来处理缓存的,具体机制就不做解释,而在具体调试中发现并不按我们想象的方式进 行,其原因很有可能是在刷新浏览器的时候采用不恰当的方式导致。对于大多数浏览器而言,都包含有三种刷新方式,以下我们以IE浏览器为例:

    F5 刷新
    Ctrl+F5 刷新
    “转至”或地址栏里回车 刷新

    这些快捷键的功能,主流浏览器都是相同的。
    而这三种刷新方式会导致浏览器采取不同的缓存机制:

    F5:不允许浏览器直接使用本地缓存,因此Last-Modified能起作用,但Expires无效
    Ctrl+F5:是强制刷新,因此缓存机制失效
    “转至”或地址栏里回车:正常的访问,Last-Modified和Expires都有效

    知道浏览器刷新还有这么一回事后,那么以后在项目调试的过程中就不会感到疑惑了。

          总结一下可以这样认为:浏览器在刷新的时候是把上一次的post参数给记忆下来并重新传递给了服务器,不管在这个过程中你是否做什么样的改动,他一概不予理会,而是忠实的把上一次所有POST的参数原封不动的重新发送给服务器罢了.所以我的问题最终结论是无解的!!!悲哀~~~

          我刚刚看了一下博客园的首页翻页似乎类似的做法,不过更糟糕的是,在非第一页刷新页面直接就跑回第一页去了.

  • 相关阅读:
    Antenna Placement---poj3020(最大匹配)
    Strategic Game--hdu1054(最小覆盖点)
    Oil Skimming---hdu4185(最大匹配)
    Windows平台下NS2网络仿真环境的搭建
    视频参数(流媒体系统,封装格式,视频编码,音频编码,播放器)对比
    最简单的基于FFMPEG+SDL的音频播放器
    FFplay源代码分析:整体流程图
    图解FFMPEG打开媒体的函数avformat_open_input
    100行代码实现最简单的基于FFMPEG+SDL的视频播放器
    视频编码标准汇总及比较
  • 原文地址:https://www.cnblogs.com/see7di/p/2719276.html
Copyright © 2020-2023  润新知