Cookie常用的优化方式

  我们知道,对于每一个http请求,无论是动态的网页aspx,还是jsp,还是/user/add这种MVC模式的URL,还是CSS或者JS文件,每一个http请求都会带着在硬盘上存有的跟这个域相关存有的cookie信息。越来越多的cookie导致请求头越来越大。那么应该如何去优化呢?

  cookie存储在客户端,伴随着HTTP请求在浏览器和服务器之间传递。除了key-value外,cookie还有max-age,path,domain和httponly属性。

  httponly属性标识一个客户端JavaScript能否操作该cookie;

  max-age属性表示缓存时间,单位为秒;

  domain设置可以访问该Cookie的域名;

  path设置该domain下可以访问该Cookie的路径,默认为/。

  cookie优化方案:

  1、去除没有必要的cookie,如果网页不需要cookie就完全禁掉。

  2、将cookie的大小减到最小。

  由于cookie在访问对应域名下的资源时都会通过HTTP请求发送到服务器,因此,减小cookie的大小,能减小HTTP请求报文的大小,提高响应速度。

  比如:对于服务器端完全不关心的数据,比如说一个网站把一个用户在网站阅读进度存储在浏览器本地。这时候我们可以采取存储在cookie中,但是这是服务器端不关心的数据,但是每次都会放到http头部中,造成冗余。这时候我们可以采取其他的缓存存储办法,比如说localStorage。

  再比如:即使是有一些必须要存储在cookie中的参数,我们也可以通过合并来减少键值对的数量。

  3、设置合适的过期时间,较长的过期时间可以提高响应速度。

  给cookie添加一个过期时间,则cookie信息将存储到硬盘上,即使浏览器退出Cookie还会存在。只要Cookie未被清除且还在过期时间内,该Cookie就会在访问对应域名时发送给服务器。

  4、通过使用不同的domain减少cookie的使用。

  cookie在访问对应域名下的资源时都会通过HTTP请求发送到服务器,但在访问一些资源,如js,css和图片时,大多数情况下cookie是多余的,可以使用不同的domain来存储这些静态资源,这样访问这些资源时就不会发送多余的cookie,从而提高响应速度。

  cookie隔离:如果静态文件都放在主域名下,那静态文件请求的时候都带有的cookie的数据提交给server的,非常浪费流量,所以不如隔离开。因为cookie有域的限制,因此不能跨域提交请求,故使用非主要域名的时候,请求头中就不会带有cookie数据,这样可以降低请求头的大小,降低请求时间,从而达到降低整体请求延时的目的。同时这种方式不会将cookie传入Web Server,也减少了Web Server对cookie的处理分析环节,提高了webserver的http请求的解析速度。

原文地址:https://www.cnblogs.com/goloving/p/9363452.html

时间: 2024-12-31 04:14:06

Cookie常用的优化方式的相关文章

Java Web系统常用性能优化方式

在很多企业中,一些Web应用,在前期运行的时候由于用户量较小,系统压力不大,系统运营状态良好.随着时间的推移,可能由于企业内某项制度的变化,使得原本并不热门的系统,变成了大家日常都需要去使用的,由于用户量激增,原本系统设计和实现中存在的缺陷大量的暴露,而最不能让人容忍的是,系统的响应时间变长,甚至在某时段用户集中访问时,这一现象会变得让人难以忍受.这往往会导致相关业务部门和负责系统运维的技术人员承受很大的压力.本文将介绍如何针对这些的系统进行相应的优化和改进,即使没有相关的系统需要优化,也可以在

冒泡排序及两种优化方式

冒泡排序是最常用的小型数据排序方式,下面是用C语言实现的,及其两种优化方式. 第一种优化方式是设置一个标记位来标记是否发生了交换,如果没有发生交换就提前结束: 第二种优化方式是记录最后放生交换的位置,作为下一趟比较结束的位置. #include <stdio.h> /* * 打印数组 * */ void printArray(int arr[], int n) { int i = 0; for (i = 0; i < n; ++i) { printf("%d ", a

WCF中常用的binding方式

原文地址:http://www.cnblogs.com/Anima0My/archive/2008/04/16/1156146.html WCF中常用的binding方式: BasicHttpBinding: 用于把 WCF 服务当作 ASMX Web 服务.用于兼容旧的Web ASMX 服务.WSHttpBinding: 比 BasicHttpBinding 更加安全,通常用于 non-duplex 服务通讯.WSDualHttpBinding: 和 WSHttpBinding 相比,它支持 

WCF中常用的binding方式 z

WCF中常用的binding方式: BasicHttpBinding: 用于把 WCF 服务当作 ASMX Web 服务.用于兼容旧的Web ASMX 服务. WSHttpBinding: 比 BasicHttpBinding 更加安全,通常用于 non-duplex 服务通讯. WSDualHttpBinding: 和 WSHttpBinding 相比,它支持 duplex 类型的服务. WSFederationHttpBinding: WS-Federation 安全通讯协议. NetTcp

浅谈尾递归的优化方式

尾递归与Continuation 浅谈尾递归的优化方式

安卓开发中我们常用的布局方式

在安卓开发中我们常用的布局方式有这么几种: 1.LinearLayout ( 线性布局 ) :(里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角) 线性布局分为水平线性和垂直线性二者的属性分别为: android:orientation= " horizontal " android:orientation= "vertical" . 2.RelativeLayout ( 相对布局 ) : (里面可以放多个控件,但是一行只能放一个控件) 附加几类

MVC输出字符串常用四个方式

var s = new MvcHtmlString("1"); var s1 = "1";//@Html.Raw(s1); var s2 = MvcHtmlString.Create("1"); var s3 = "1";//@String.fomart(s3); 要MVC的Razor视图输出字符串的常用几个方式 记录下 感谢群里朋友

cocos2dx 游戏开发中常用场景切换方式以及特性

runWithScene(CCScene* scene):启动游戏,并运行scene 场景.这个方法在主程序启动时第一次启动主场景时调用. replaceScene(CCScene* scene):直接使用传入的scene 替换当前场景来切换画面,当前场景将被释放.这是切换场景时 最常用的方法. pushScene(CCScene* scene):在不释放旧场景内存的情况下运行新场景,推进新场景相当于在当前可见的纸上再放一张纸,而之前的纸位置何持不变.适用情况: 1.推进一个经常被用到的场景,例

基础篇:1.JavaScript运行在html中,引用有几种方式?—— 6.js中常用的输出方式?

书接上文,上文提到若干条JavaScript的基础性知识,大部分都是一些概念性的东西,本着认真严谨的态度,我们要认真对待,有些条目的问题是某个知识点的周边延伸,为节约篇幅,就一起整理了,如有描述不对的地方或者是描述不足的地方,望大家批评指正,下面是我给我”参考答案“,也只是仅供参考: 1.JavaScript运行在html中,引用有几种方式? 我知道的方法有3种: 第一种:外部引用远程JavaScript文件,如<script type="text/javascript" src