CNode

koa-static-cache源码 使用了fs.readFileSync 来读取文件, 这个不会阻塞cpu吗?

问答
Ffengyaogit123发布于8 年前最后回复8 年前6 回复6249 浏览0 收藏
      源码
	  
function loadFile(name, dir, options, files) {
    ....
    var stats = fs.statSync(filename)
    var buffer = fs.readFileSync(filename)

    obj.cacheControl = options.cacheControl
    obj.maxAge = obj.maxAge ? obj.maxAge : options.maxAge || 0
    obj.type = obj.mime = mime.lookup(pathname) || 'application/octet-stream'
    obj.mtime = stats.mtime
    obj.length = stats.size
    obj.md5 = crypto.createHash('md5').update(buffer).digest('base64')

    debug('file: ' + JSON.stringify(obj, null, 2))
    if (options.buffer)
        obj.buffer = buffer

    buffer = null
    return obj
}
```end

求解
查看回复

回复 (6)

N
nanzm#1·8 年前

image.png

F
fengyaogit123#2·8 年前
引用 nanzm

@nanzm caches the assets on initialization-youneed to restart the process to update the assets.(can turn off with options.preload = false) 跟 【fs.readFileSync 来读取文件, 这个不会阻塞cpu】 有联系吗,我不太理解,谢谢

A
atian25#3·8 年前

设计如此,这个函数会在启动期调用,然后全部缓存到 cache,而不是运行期,所以不会影响到用户。

https://github.com/koajs/static-cache/blob/master/index.js#L33

J
JacksonTian#4·8 年前

只阻塞一次,不会阻塞每个请求。

F
fengyaogit123#6·8 年前
引用 JacksonTian只阻塞一次,不会阻塞每个请求。

@JacksonTian 非常感谢,我明白了!

参与回复
登录后即可参与回复。登录