zhangyuang / ssr

A most advanced ssr framework support React17/React18/Vue2/Vue3 on Earth that implemented serverless-side render specification.
http://doc.ssr-fc.com/
MIT License
2.61k stars 284 forks source link

服务端渲染服务应该默认集成etag插件,让cdn可以和浏览器进行协商缓存304 #101

Closed masx200 closed 3 years ago

masx200 commented 3 years ago

提问前请确认以下几点信息,否则你的问题将不会被解答

详细描述你的问题

服务端渲染服务应该默认集成etag插件,

大多数cdn都可以根据etag处理304协商缓存

让cdn可以和浏览器进行协商缓存304,

如果内容没有变化可以减少传输数据量

https://doc.ssr-fc.com/docs/features$started#%E5%BF%AB%E9%80%9F%E5%86%99%E4%B8%80%E4%B8%AA%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93%E6%9C%8D%E5%8A%A1

请求 URL: https://doc.ssr-fc.com/docs/features$plugin
请求方法: GET
状态代码: 200 OK
远程地址: 106.15.253.106:443
引用站点策略: strict-origin-when-cross-origin
Accept-Ranges: bytes
Access-Control-Expose-Headers: Date,x-fc-request-id,x-fc-error-type,x-fc-code-checksum,x-fc-invocation-duration,x-fc-max-memory-usage,x-fc-log-result,x-fc-invocation-code-version
Content-Length: 35442
Content-Type: text/html;charset=utf-8
Date: Tue, 24 Aug 2021 08:38:56 GMT
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Fc-Code-Checksum: 5462187707872991205
X-Fc-Invocation-Duration: 23
X-Fc-Invocation-Service-Version: LATEST
X-Fc-Max-Memory-Usage: 117.80
X-Fc-Request-Id: f0da4f91-497a-49c1-a0b7-aa9501244a4b
X-Frame-Options: SAMEORIGIN
X-Readtime: 13
X-Xss-Protection: 1; mode=block

期望的结果

响应头应该包含'etag'字段,让cdn可以和浏览器进行协商缓存304

当前使用的版本

复现仓库地址

你本人对问题可能的原因判断(如果你能大概判断的话)

zhangyuang commented 3 years ago

...etag是针对静态资源文件的,服务端渲染内容是动态渲染的怎么可能加 etag。就算你的服务端渲染内容大部分情况是不变的,也不可能默认加etag。有需要自己去加,我认为根本就没有必要去加。

masx200 commented 3 years ago

...etag是针对静态资源文件的,服务端渲染内容是动态渲染的怎么可能加 etag。就算你的服务端渲染内容大部分情况是不变的,也不可能默认加etag。有需要自己去加,我认为根本就没有必要去加。

不管是不是静态文件还是动态文件都是可以根据文件内容哈希运算生成etag的,其他服务端渲染的动态内容都可以生成etag,比如说nextjs

zhangyuang commented 3 years ago

如果你要用你可以自己在业务代码里添加。框架不可能做到底层。业务代码可以实现任何功能。

zhangyuang commented 3 years ago

跟你用next还是 nuxt有什么关系。。。这不就是纯粹的node能力吗。

zhangyuang commented 3 years ago

我认为根本就没有必要用 etag 用pwa或者redis都比它有用多了,这是跟业务强相关的,业务代码可以实现任何你需要实现的功能