全球主机交流论坛

标题: 一个应用级实现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