返回码304对网站有什么影响
304是搜索引擎为了降低服务器的带宽,对之前访问过的页面定制了缓冲机制。当客户端对这些页面进行请求,服务器会根据缓存内容来判断该页面与之前的是否相同,倘若是相同的会直接返回304,这时客户端就会调用缓存的内容,从而提高了蜘蛛工作的效率。
我们网站出现304有两个原因:1、网站更新周期长或者不更新或者是某个分类长期不更新。2、纯静态页面或者强制生成静态html。
304是使用缓存,不影响网页,查服务器。
第一步、先确认网络是否丢包,ping命令检测。
第二步、检测操作系统资源使用情况(http服务与数据库)。
第三步、确认http服务是否hang死了,http缓存用满的时候会这样。
第四步、查数据库链接是否正常。
第五步、检查数据库的慢查询语句。
第五、以上步骤都没问题,查程序bug去。
ps:如果使用的mysql,我建议评估业务量,重新调整数据库使用的内存,别使用默认配置。
当你第一次访问时,服务器会返回给你200状态码,同时在头里追加ETag值给你。浏览器拿到后将其缓存。
下一次再访问时,因浏览器已经有该地址的ETag值了。会将其缓存的ETag值内容放在请求头的If-None-Match中,服务器检查其自身内容的ETag值是否与其一致,如果一致就会返回304状态码,告诉你内容和你保存的一致,没有发生改变过。
举例来说,
C:S,你几岁了?
S:C,我18岁了。
===========
C:S,你几岁了?我猜你18岁了。
S:靠,你知道还问我?(304)
===========
C:S,你几岁了?我猜你18岁了。
S:C,我19岁了。(200)
以上就是200和304的解释。
Cache-Control和Expires则是告诉浏览器缓存这些数据的策略。
drupal则并非是非法hash导致的问题,问题在于gzip上。gzip其实就是gunzip了。ZIP压缩会有个特点,相同的内容重复压缩得到的二进制是不一样的,这和其字典策略相关(猜测,未验证),你可以随便压缩个文件对比2次的ZIP包checksum值是否一致来确认。那么这样就可以解释了,虽然原始内容没有改变,但是传输时因为用了gzip,所以drupal认为原始数据始终在改变,每次返回200也符合我先前所讲的内容。
最后,根据REST的原则,可以看出一些请求是幂等的,一些请求是非幂等的。那么服务器与客户端之间的缓存层,比如CDN也好,drupal,或者nginx等,都会对幂等请求做缓存策略,非幂等请求不做缓存策略。这里如何来控制,则需要服务器端在返回内容时利用好Cache-Control和Expires等头信息来进行。
所谓304是指蜘蛛上次访问页面发出访问请求,当该页面未更新时,服务器端则返回404状态码。在网站日志中最喜欢看到的就是200状态码,当出现304状态码时许多人对会感到比较陌生,当返回过多304状态码时,容易导致网站快照不更新以及之后收录困难,要解决问题还得寻找源头,之后再一一排除解决,常见的网站出现304状态码的原因分析如下: 1、网站更新频率低于蜘蛛访问频率,导致蜘蛛对首页发出请求时,服务器端返回未更新状态码。 2、文章页未更新,文章页出现304状态码也不少见,不过一般文章收录后都较少做更改,此时我们可以在文章结尾添加更新带动器,如上下篇文章链接,相关文章推荐等,都能带动页面的更新
希望采纳
下面是工作中我们常用的15个 HTTP状态码 ,必须 牢记 哦
如果你想深入了解具体的HTTP状态码,请参考:HTTP状态码超详细说明
这个状态码是告诉客户端应该 继续发送请求 ,这个临时响应是用来通知客户端的,部分的请求服务器已经接受,但是客户端应继续发送求请求的剩余部分,如果请求已经完成,就忽略这个响应,而且服务器会在请求完成后向客户发送一个最终的结果
这个是 最常见 的http状态码,表示服务器已经成功接受请求,并将返回客户端所请求的最终结果。
说白了,就是 一切正常 。
表示服务器已经接受了请求,但是 还没有处理 ,而且这个请求最终会不会处理还不确定
服务器成功处理了请求,但 没有返回任何实体内容 ,可能会返回新的头部元信息
服务器已经 成功处理了部分GET请求 。
类似于FlashGet或者迅雷这类的HTTP 下载工具,都是使用此类响应实现断点续传,或者将一个大文档分解为多个下载段同时下载。
客户端请求的网页已经永久移动到新的位置,当链接发生变化时,返回301代码告诉客户端链接的变化,客户端保存新的链接,并向新的链接发出请求,已返回请求结果。
请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。
如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。
简单的表达就是:服务端已经执行了GET,但文件未变化。
关于HTTP缓存内容可参考:一文了解HTTP缓存
Web服务器通过返回HTTP 400错误告诉访问者,访问者用来访问网站的程序出错,或访问请求途中遭到破坏。
访问者试图访问受限页面但未经授权时,网站返回HTTP 401错误。错误登录尝试是导致这一错误的主因。
403错误类似于401错误,不同之处在于401错误是未经授权,而403错误是禁止访问。 任何登录对403错误都不起作用。 尝试访问(被禁止的)网站目录时,就会发生403错误。
请求失败,客户端请求的资源没有找到或者是不存在。
也是比较常见的。
服务器遇到未知的错误,导致无法完成客户端当前的请求。
作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
服务器由于临时的服务器过载或者是维护,无法解决当前的请求,以上http状态码是服务器经常返回的状态代码,用户只能通过浏览器的状态了解服务器是否正常运行,一般除了错误的状态码,都不会看到服务器的状态码的。
0条评论