9 Matching Annotations
  1. Jul 2017
    1. 如果您正在编写一个模块,并部署到互联网上,该怎么办呢?你需要编写哪种模块风格呢?

      需要编写三种不同的模块类型,也就是 全局模块对象、CommonJS和AMD

  2. Jun 2017
    1. HTTP/1.1定义的 Cache-Control 头用来区分对缓存机制的支持情况, 请求头和响应头都支持这个属性。通过它提供的不同的值来定义缓存策略。

      Request Header与Response Header都支持这个属性 通过调整Cache-Control头可以做出很多缓存策略:

      1. 完全不支持
      2. 不缓存内容
      3. 私有缓存
      4. 公共缓存
      5. 缓存过期时间
    2. 通常定义Pragma以向后兼容基于HTTP/1.0的客户端

      效果同Cache-Control:no-Cache相同,区别在于HTTP响应头不支持这一个属性,不能完全取代Cache-Control属性..

    3. 在过期时间前,资源缓存是有效的,反之则缓存失效。通过不停抛弃过期的缓存资源以保证资源的实时性。注意,旧的缓存不会被抛弃或者忽略;当发起一个针对旧缓存资源的请求时,会在请求头里带上If-None-Match用来判断缓存是否还有效。如果有效,服务端返回304(Not Modified)和空的body以节省一部分带宽。

      为何要有时效性:

      1. 空间有限
      2. 服务器可能有更新文件

      在缓存有效期过期前,不会去询问服务器资源是否有效..如果缓存过期,就会在请求头上带上If-None-Match来判断缓存是否依旧有效

    4. 不频繁更新的文件会使用特定的命名方式:在URL后面(通常是文件名后面)会加上版本号。加上版本号后的资源就被视作一个完全新的独立的资源,同时拥有一年甚至更长的缓存过期时长。
    5. 如果资源请求的响应头里含有ETag, 客户端可以在后续的所有请求的头中带上 If-None-Match 头来验证缓存。
    6. 私有缓存只能用于单独用户。

      私有缓存

    7. 缓存的种类有很多,其大致可归为两类:私有与共享缓存。

      缓存类型

    8. 当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。

      这样可以重用已经获取的资源,提升网站的性能