javascript - sf 网站如何做到每次点击‘头条’返回的状态码都是200?急!!在线等!!
伊谢尔伦
伊谢尔伦 2017-04-11 13:31:55
[JavaScript讨论组]

这段时间我在做一个单页面应用,js、css、img等资源都有版本号控制,可以很好的解决缓存问题。
但是有个问题,发现一旦入口的html被缓存了,里面资源即使被版本号处理也无济于事。
我相信如果可以和sf网站那样,每点一个栏目都不会缓存,返回状态码200一定可以解决问题。
我的问题是:
1、单页面应用入口的html缓存如何处理?
2、如何做到每次刷新单页面应用都会返回状态码200?

补充:
百度的首页也是这样,每次请求主页面返回的状态码都是200。如果是由于客户端检测到本地与服务端的内容不同,但是我将每次相应的内容通过对比工具进行对比,都是一样的,这是状态码应该是304才对。


最后找到一种方式,是通过.net mvc返回入口html实现的,具体如下:


    public class F9Controller : Controller

    {

        // GET: F9

        public ActionResult Index()

        {

            return new FilePathResult("~/f9/index.html", "text/html");

        }

    }

通过这种方式可以达到每次请求的入口文件html,状态码都是200,但是其他的资源引用方式的缓存依然符合浏览器浏览器缓存策略。

如果还有其他方式,我会补充的。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(3)
怪我咯

sf的头条那个页面,本身就是动态页面。
如果是静态页面,一般情况下是会被服务器当作静态资源给缓存掉的,这个时候其实还是比较好控制,只需要设置一下服务端的缓存策略即可,根据不同的服务器软件设置方式不一,但大体上都是设置某文件或者某路径下的文件不缓存,或者缩短静态缓存的时间。

题主这个情况极有可能是缓存时间过长的问题。清理下本地浏览器缓存后刷新页面还是老页面,估计就这个问题了。

然后,如果这个服务在线上,那这影响因素太多了,cdn、运营商等等都会做缓存,曾经还见过一大兄弟碰到伤心病狂的运营商连post请求都缓存的。
如果有cdn,手动更新cdn各个节点上的资源。如果是运营商的缓存,那就慢慢的等吧。。。

巴扎黑

设置 http header Cache-Control: no-cache
这样浏览器就不会缓存了。每次都会去服务器下载html

楼主可以关注一下服务器响应的header中应该有这2个设置,把这个去掉,就不会出现304了。

ETag:"be15b26c29bce1:0"
Last-Modified:Fri, 15 Feb 2013 03:06:18 GMT

HTTP 304

伊谢尔伦

客户端和服务器进行对比,内容没变化的时候会返回304,如果有变化才会返回200.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号