全球主机交流论坛
标题:
一个应用级实现304加速网站的算法分享
[打印本页]
作者:
360安全卫士
时间:
2012-11-21 03:52
标题:
一个应用级实现304加速网站的算法分享
应用级304
演示:
意义:可以为网站节省很大的流量,服务器只需响应一个几百b的数据表示数据未更新过,以此来避免几十、几百KB的数据重复下载。
算法简述:在发表文章时,记录更改过的次数,在KV引擎中与URL相映射
逻辑:
1. 发表文章
正常发表逻辑
初始化文章编辑etag次数为1
储存到kv引擎(k -> 文章URL v->etag)
2. 首次请求
浏览器未加上etag头
3. 首次输出
前端伺服器获取KV引擎中k为url的文章的etag并附加到HTTP头,并转发请求到后端
4. 二次请求
浏览器附带If-None-Match头,值为上次响应的etag
5. 二次输出
获取kv引擎中k为url的文章的etag,与请求头中etag校验,内容未更新,直接响应HTTP 304
6. 更新文章
正常更新逻辑
获取kv引擎中k为url的文章的etag,加1并入kv库
7. 三次请求
浏览器附带If-None-Match头,值为上次响应的etag
8. 三次输出
获取kv引擎中k为url的文章的etag,与请求头中etag校验,内容已更新,输出新的etag,并转发请求到后端
算法分析:
理论上,一个网站有多少url,KV引擎数据库里就有多少条url-etag映射的数据。
以上算法中,etag其实就是一个计数器,虽然太过于简单但完全能满足304的要求。这样做还有一个好处,以纯计数器来充当传统的哈希式etag,避免了很多无法直接生成内容的页面计算哈希的不可实现的缺陷。
编辑器承担着了一个额外重要的角色,那就是modifier(更新器),因为kv引擎
的etag,完全得由后端程序来在编辑时主动更新。
难点: 1.列表页、tag页数量较大时,得PUSH任务,离线异步更新etag
2.错误、故障发生后的记录和处理
3.kv引擎的数据需要持久备份
作者:
过客
时间:
2012-11-21 06:02
TrollFace 发表于 2012-11-21 03:53
楼主技术帝,求PM 谷歌cdn方法
http://speeder.sinaapp.com/
作者:
用户名
时间:
2012-11-21 06:11
先支持了
作者:
Poison
时间:
2012-11-21 06:27
TrollFace 发表于 2012-11-21 03:53
楼主技术帝,求PM 谷歌cdn方法
那个越用越慢的
欢迎光临 全球主机交流论坛 (https://fd.vvwvv.eu.org/)
Powered by Discuz! X3.4