chunchunlike

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  7 随笔 :: 1 文章 :: 10 评论 :: 0 引用

公告

2012年4月10日 #

关于cookie的测试。 

 

  • 概述 分浏览器 IE6,IE8,Chrome,FireFox分别测试
    • 测试1 cookie总数量限制,超过数量限制的cookie如何处理
    • 测试2 cookie总长度限制
    • 测试3 单条cookie长度测试
    • 测试4 子cookie长度限制
  • 测试用的各浏览器版本
    • IE6版本6.0.3790.3959
    • IE8版本8.0.6001.18702
    • Chrome版本14.0.835.15,Chrome取得cookie速度较慢,测试时注意
    • FireFox版本6.0.2
  • cookie总数量测试
    • 1 IE6 最多设置20个cookie,后设置的会把前面设置的冲掉
    • 2 IE8 最多设置50个cookie,后设置的会把前面设置的冲掉
    • 3 Chrome最多设置160个左右,个数不定,后设置的会把前面设置的冲掉
    • 4 FireFox最多设置150,后设置的会把前面设置的冲掉
  • cookie总长度测试
    • 1 IE6 最大4078
    • 2 IE8 最大10198
    • 3 Chrome 大于80000
    • 4 FireFox 大于80000
  • 单条cookie长度测试
    • 1 IE6 在4000左右
    • 2 IE8 在5000左右
    • 3 Chrome 在4000左右
    • 4 FireFox 在4000左右
  • 子cookie长度测试 (子cookie实际是在cookie里面拼字符串,上面单条cookie长度的测试对子cookie仍适用)
    • 1 IE6 一条cookie可以设置几百个子cookie,子cookie总和长4000左右
    • 2 IE8 一条cookie可以设置几百个子cookie,子cookie总和长4000左右
    • 3 Chrome 一条cookie可以设置几百个子cookie,子cookie总和长4000左右
    • 4 FireFox 一条cookie可以设置几百个子cookie,子cookie总和长4000左右

 

--- 

1 a.com ,b.com 。 跨域设置、获取均得不到cookie

2 子域可以读取、设置父域的cookie。
   比如:newhouse.a.com 可以读取 设置 a.com的cookie信息
   
3 子域与子域之间不能读取设置。
4 子域,父域cookie的个数 在ie6下分别是20个 不会冲突。


---

跨域读取赋值 cookie可以考虑服务端读取赋值,传回到客户端。

主要原因是:script标签是可以跨域的。

---

XmlHttpRequest 触发的get post均不能跨域。 

可以由src="图片路径",触发get请求, 跨域亦可。

post跨域 :部分浏览器XmlDomainRequest可以,还有其他方法,待补充。

 

posted @ 2012-04-10 19:13 chunchunlike 阅读(26) 评论(0) 编辑

关于cookie的测试。 

 

  • 概述 分浏览器 IE6,IE8,Chrome,FireFox分别测试
    • 测试1 cookie总数量限制,超过数量限制的cookie如何处理
    • 测试2 cookie总长度限制
    • 测试3 单条cookie长度测试
    • 测试4 子cookie长度限制
  • 测试用的各浏览器版本
    • IE6版本6.0.3790.3959
    • IE8版本8.0.6001.18702
    • Chrome版本14.0.835.15,Chrome取得cookie速度较慢,测试时注意
    • FireFox版本6.0.2
  • cookie总数量测试
    • 1 IE6 最多设置20个cookie,后设置的会把前面设置的冲掉
    • 2 IE8 最多设置50个cookie,后设置的会把前面设置的冲掉
    • 3 Chrome最多设置160个左右,个数不定,后设置的会把前面设置的冲掉
    • 4 FireFox最多设置150,后设置的会把前面设置的冲掉
  • cookie总长度测试
    • 1 IE6 最大4078
    • 2 IE8 最大10198
    • 3 Chrome 大于80000
    • 4 FireFox 大于80000
  • 单条cookie长度测试
    • 1 IE6 在4000左右
    • 2 IE8 在5000左右
    • 3 Chrome 在4000左右
    • 4 FireFox 在4000左右
  • 子cookie长度测试 (子cookie实际是在cookie里面拼字符串,上面单条cookie长度的测试对子cookie仍适用)
    • 1 IE6 一条cookie可以设置几百个子cookie,子cookie总和长4000左右
    • 2 IE8 一条cookie可以设置几百个子cookie,子cookie总和长4000左右
    • 3 Chrome 一条cookie可以设置几百个子cookie,子cookie总和长4000左右
    • 4 FireFox 一条cookie可以设置几百个子cookie,子cookie总和长4000左右

 

--- 

1 a.com ,b.com 。 跨域设置、获取均得不到cookie

2 子域可以读取、设置父域的cookie。
   比如:newhouse.a.com 可以读取 设置 a.com的cookie信息
   
3 子域与子域之间不能读取设置。
4 子域,父域cookie的个数 在ie6下分别是20个 不会冲突。


---

跨域读取赋值 cookie可以考虑服务端读取赋值,传回到客户端。

主要原因是:script标签是可以跨域的。

---

XmlHttpRequest 触发的get post均不能跨域。 

可以由src="图片路径",触发get请求, 跨域亦可。

post跨域 :部分浏览器XmlDomainRequest可以,还有其他方法,待补充。

---

20120425 

post跨域 ie浏览器 XmlDomainRequest

高级的ff chrome XmlHttpRequest

 

其他的浏览器内嵌iframe,用window.name中介传值

---

在客户端用js 分别存中文、英文cookie测试,都是在ie6的环境下测试,发现一个中文的长度等于两个英文的长度。
 
比如
 
“设置值设置值设置值...” 在cookie里面能放679 个“设置值”
 
“abcabcabc...”          在cookie里面能放1359 个“abc”

 

 

 

 

 

posted @ 2012-04-10 19:13 chunchunlike 阅读(41) 评论(0) 编辑

2011年8月16日 #


         //周一为一周的开始,第一周从第一个周一开始算

        //2011.01.03为2011年周一的开始
        function GetWeekIndex(dateobj) {
            var firstDay = GetFirstWeekBegDay(dateobj.getFullYear());
            if (dateobj < firstDay) {
                firstDay = GetFirstWeekBegDay(dateobj.getFullYear() - 1);
            }
            d = Math.floor((dateobj.valueOf() - firstDay.valueOf()) / 86400000);
            //document.write(dateobj.getYear() + "/" + (dateobj.getMonth()+1) + "/" + dateobj.getDate()  + " 第" + (Math.floor(d / 7) + 1) + "周"+"<br/>");
            return Math.floor(d / 7) + 1;
        }
        function GetFirstWeekBegDay(year) {
            var tempdate = new Date(year, 0, 1);
            var temp = tempdate.getDay();
            if (temp == 1)
                return tempdate;
            temp = temp == 0 ? 7 : temp;
            tempdate = tempdate.setDate(tempdate.getDate() + (8 - temp));
            return new Date(tempdate);
        }
        GetWeekIndex(new Date(2007, 0, 1));
posted @ 2011-08-16 10:05 chunchunlike 阅读(230) 评论(6) 编辑

2011年7月31日 #

第四章 算法流程控制

for - in循环是否写 var

理解:不写var 全局变量 ,写var:因为没有for循环域的变量,这个for实在test内部的,在test外是访问不到的。

---

循环种类 for(), while(){},  do{}while(),for - in循环四种

1 for - in 不能 用于数组循环

2 for-in比较慢 因为会搜索实例原型属性

 

例子重要

 

所以除非必要,比如不知道对象属性名的时候用for-in,

其他情况 比如数组循环 知道属性名的时候用for

----

循环性能两方面:迭代次数,每次迭代处理的事务。

记住一种写法:

for(var i=0,len = items.length;i<len;i++){

}//用变量存length 不必每次都算测试循环条件

---

颠倒顺序调高性能。 整个顺序由前到后 由后到前都是可以接受的话,倒序循环提高性能。 倒序循环是计算机编程通用的方法。

提高顺序是因为 比较和是否为true放到一起了 ,详见书p65.

---

减小迭代次数  比如 达夫设备.依次循环处理多个,余数分别出来

达夫设备在1000+以上性能提升明显

<script>
debugger
var arr=[];
for(var i=0;i<1011;i++){
arr.push("aa"+i);
}
var str2 = "";
var str1 = "";
var i =arr.length % 8;
while(i > 0 ){
str2 += arr[i]+",";
i--;
}
var i = Math.floor(arr.length/8);
i = i*8;
while(i){
str1 += arr[i--]+",";
str1 += arr[i--]+",";
str1 += arr[i--]+",";
str1 += arr[i--]+",";
str1 += arr[i--]+",";
str1 += arr[i--]+",";
str1 += arr[i--]+",";
str1 += arr[i--]+",";
}
debugger
var aaaaaa= 1;

</script>

---

新浏览器 原生支持的forEach

<script>
var arr=[];
for(var i=0;i<1011;i++){
arr.push("aa"+i);
}
arr.forEach(function(value,index,array){
if(index<3)
alert(index);
}
);

</script>

 

ie6不支持,firefox chrome支持

---

if-else可以用二叉树分支优化 减少遍历深度

最可能访问的放到最前端。

--

switch代码空间太大,如果case的是数值,且连续

var results=["aaa","bbb","ccc"];

return results[i];

--

浏览器有调用栈限制,太多的递归会报错。解决办法 递归化为迭代 即循环,或者缓存技术。

--

ps合并排序算法:

1 分两半。左面有序,右面有序。

2 左右再排序,形成一个新的。谁小谁拿出来。

机组 数组方法 arr.shift();

<script>
var arr = [1,2,5];
var temp = arr.shift();
alert(temp);//1
alert(arr) //2,5

</script>

 

数组concat方法

<script>
var arr = [1,2,5];
var temp = arr.shift();
alert(temp);//1
alert(arr) //2,5
var arrex=[100,200];
arrex = arrex.concat(10);//可以添数
arrex = arrex.concat(arr);//可以填数组
alert(arrex);
</script>

---

记住

<script>
function memoryFunc(basefunc,cache){
    cache = cache || {};
    var shell = function(arg){
        if(!cache.hasOwnPorperty(arg)){
            cache[arg] = basefunc(arg);
        }
        return cache[arg];
    }
    return shell;
}
var func = memoryFunc(basefunc,{"0":1,"1":1});

</script>

posted @ 2011-07-31 14:07 chunchunlike 阅读(123) 评论(0) 编辑

2011年7月30日 #

摘要: 第三章DOM 文档对象模型 与语言无关。用于操作html xml。 浏览器中主要和html打交道。DOM是个和语言无关的API,在浏览器中这个API 由JavaScript实现。客户端编程很多时候就是和这个文档打交道。---浏览器中DOM JS 会分别实现。比如 IE: js--JScript--jscript.dll DOM另外一个库-mshtml.dll(Trident)这中分离允许其他语言比如VBScript共享DOM及其Trident提供的渲染函数。Chrome的DOM用的是Webkit中的WebCore,js是V8引擎。等等 其他浏览器都是二者分离的。---二者分离 好处可能是复用接阅读全文
posted @ 2011-07-30 20:52 chunchunlike 阅读(82) 评论(0) 编辑

2011年7月29日 #

第二章

js数据按存储位置可分为

直接变量  ;变量 第一种的引用 ;数组元素;对象成员。性能问题一般发生在后两种上。

---

作用域:函数是Function对象的一个实例,也是对象的一种。有一个[[ Scope ]]属性。

函数创建时 加入一个全局对象 Global object 包含this-window,window docuemnt navigator。

函数执行时 会创建一个运行时期上下文 ,每次执行时对象的上下文都是独一无二的,多次调用就多次创建。函数执行完毕,上下文销毁。

            上下文创建后会添加新的 活动对象 activation object,包括 this 局部变量 参数集合,这个新对象会推到作用域前端。上下文销毁时,activation object也会销毁。

          查找变量是由前端的 activeobjct 再找到 global object。如果要找的变量靠后,则影响性能。

---

解决办法 var变量保存 比如document在末端 会经常用 。用var 变量放在前端 var bd = docuemnt.body.

这样多次用docuemnt.body,只需要查找一次。

--

改变作用域, 作用域链前面 再添加对象。

比如with  --避免使用,因为对第二层对象的访问变了。 如果仅仅是提高性能 可用var bd = document;

---

try-catch中的catch;catch很有用不建议避免。

题外原则:try-catch不应用来解决js错误,如果知道错误会发生,那么应该修复代码,而不是catch处理。

妥协办法

try{

    do();

}catch(ex){

    docatch(ex); //!!委托给处理器方法。

}

---

个人感觉:闭包是在函数内 定义了一个函数 会有闭包。

外层函数执行时 创建闭包closure,为了闭包访问外层的id 必须有个特定的作用域链。

好吧 没看太清楚

---

原型

_proto_ ,最后绑定到Object的实例作为原型。

和标识符解析一样,对象成员的解析也是有开销的,原型链的遍历过程中,每深入一层都会增加性能的损失,于是

对象在原型链中存在的位置越深,找到它就越慢。

--

对象成员嵌套得越深,访问速度就会越慢例如window.location.href,每次遇到点操作符,该嵌套成员都会导致JavaScript 引擎搜索所有对象成员,例如执行location.href 总是要比window.location.href 要快。

当要频繁地访问对象成员时,最好用变量将它们缓存起来。

posted @ 2011-07-29 00:05 chunchunlike 阅读(29) 评论(0) 编辑

2011年7月28日 #

摘要: 前言大多数浏览器用js解释器来执行代码。解释器天生就没有编译性代码快。解释性代码要经历把代码转化成计算机指令的过程。编译器会优化 找最快的机器码来优化,解释器很少这样的优化。解释器很大声读上意味着:代码怎么写,就怎样被执行。其他语言编译器的优化工作,有js开发者来完成。chrome的v8是实时编译引擎。firefox Safari也推出了他们的js引擎。这些引擎是编译器层面的,或许有一天我们不必关系js代码的性能。---1运行时间,下载,dom操作,页面生存周期--这些核心是ECMAScript的,肯能随着Js不断进步变得无关紧要--不懂2 dom交互,网络延迟 js的阻塞和并发下载。这些要从阅读全文
posted @ 2011-07-28 22:52 chunchunlike 阅读(71) 评论(4) 编辑

仅列出标题