H5面试题精选

Cookie与Session的区别

保持状态

Cookie保存在浏览器端,服务端可以知道其中的信息。
Session保存在服务器端,客户端不知道其中的信息。

使用方式

Cookie机制

  • 如果不在浏览器中设置过期时间,Cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种Cookie简称会话Cookie。
  • 如果在浏览器中设置了Cookie的过期时间,Cookie被保存在硬盘中,关闭浏览器后,Cookie数据仍然存在,直到过期时间结束才消失。
  • Cookie是服务器发给客户端的特殊信息,Cookie是以文本的方式保存在客户端,每次请求时都带上它。

Session机制

  • 当服务器收到请求需要创建Session对象时,首先会检查客户端请求中是否包含sessionid。
    • 如果有sessionid,服务器将根据该id返回对应Session对象;
    • 如果客户端请求中没有sessionid,服务器会创建新的Session对象,并把sessionid在本次响应中返回给客户端。
  • 通常使用Cookie方式存储sessionid到客户端,在交互中浏览器按照规则将sessionid发送给服务器;
  • 如果用户禁用Cookie,则要使用URL重写,可以通过response.encodeURL(url) 进行实现。API对encodeURL的解释为:
    • 当浏览器支持Cookie时,url不做任何处理;
    • 当浏览器不支持Cookie的时候,将会重写url将SessionID拼接到访问地址后。

存储内容

  • Cookie只能保存字符串类型,以文本的方式;
  • Session中保存的是对象(通过与Hashtable类似的数据结构来保存),能支持任何类型的对象(Session中可含有多个对象)。

存储的大小

  • 单个Cookie保存的数据不能超过4kb。
  • Session大小没有限制。

安全性

  • 针对Cookie所存在的攻击:Cookie欺骗,Cookie截获。
  • Session的安全性大于Cookie。原因如下:
    • sessionID存储在Cookie中,若要攻破Session首先要攻破Cookie;
    • sessionID是要有人登录,或者启动session_start才会有,所以攻破Cookie也不一定能得到sessionID;
    • 第二次启动session_start后,前一次的sessionID就失效了,Session过期后,sessionID也随之失效;
    • sessionID是加密的;
    • 综上所述,攻击者必须在短时间内攻破加密的sessionID,这很难。

路径区分

  • Session不能区分路径,同一个用户在访问一个网站期间,所有的Session在任何一个地方都可以访问到;
  • Cookie中如果设置了路径参数,那么同一个网站中不同路径下的Cookie互相是访问不到的。

前端需要注意哪些SEO

  1. 合理的title、description、keywords;
    • title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title要有所不同;
    • description把页面内容高度概括,长度合适,不可过分堆砌关键词,不同页面description有所不同;
    • keywords列举出重要关键词即可。
  2. 语义化的HTML代码,符合W3C规范:语义化代码让搜索引擎容易理解网页;
  3. 重要内容HTML代码放在最前:搜索引擎抓取HTML顺序是从上到下,有的搜索引擎对抓取长度有限制,保证重要内容一定会被抓取;
  4. 重要内容不要用js输出:爬虫不会执行js获取内容;
  5. 少用iframe:搜索引擎不会抓取iframe中的内容;
  6. 非装饰性图片必须加alt;
  7. 提高网站速度:网站速度是搜索引擎排序的一个重要指标。

如何进行网站性能优化

Content方向

  1. 减少HTTP请求:合并文件、CSS精灵、inline Image;
  2. 减少DNS查询:DNS查询完成之前浏览器不能从这个主机下载任何文件。方法:DNS缓存、将资源分布到恰当数量的主机名,平衡并行下载和DNS查询;
  3. 避免重定向:多余的中间访问;
  4. 使Ajax可缓存;
  5. 非必须组件延迟加载;
  6. 未来所需组件预加载;
  7. 减少DOM元素数量;
  8. 将资源放到不同的域下:浏览器同时从一个域下载资源的数目有限,增加域可以提高并行下载量;
  9. 减少iframe数量;
  10. 减少404页面。

Server方面

  1. 使用CDN;
  2. 添加Expires或者Cache-Control响应头;
  3. 对组件使用Gzip压缩;
  4. 配置ETag;
  5. Flush Buffer Early;
  6. Ajax使用GET进行请求;
  7. 避免空src的img标签。

Cookie方面

  1. 减小cookie大小;
  2. 引入资源的域名不要包含cookie。

Css方面

  1. 将样式表放到页面顶部;
  2. 不使用CSS表达式;
  3. 使用不使用@import;
  4. 不使用IE的Filter。

Javascript方面

  1. 将脚本放到页面底部;
  2. 将javascript和css从外部引入;
  3. 压缩javascript和css;
  4. 删除不需要的脚本;
  5. 减少DOM访问;
  6. 合理设计事件监听器。

图片方面

  1. 优化图片:根据实际颜色需要选择色深、压缩;
  2. 优化css精灵;
  3. 不要在HTML中拉伸图片;
  4. 保证favicon.ico小并且可缓存。
0

相关文章

  • 暂无相关文章

加入讨论 暂无讨论

发表评论

评论内容不能为空
昵称不能为空
请输入有效的电子邮件地址

有人回复时邮件通知我