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

      为何要有时效性:

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

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

    3. 不频繁更新的文件会使用特定的命名方式:在URL后面(通常是文件名后面)会加上版本号。加上版本号后的资源就被视作一个完全新的独立的资源,同时拥有一年甚至更长的缓存过期时长。

      形似如下:

      http://xxx.xxx/xxx.js?xxx