日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame Session-File

文件存儲

在默認(rèn)情況下,?ghttp.Server?的?Session?存儲使用了內(nèi)存+文件的方式,使用?StorageFile?對象實(shí)現(xiàn)。具體原理為:

創(chuàng)新互聯(lián)建站主營石城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),石城h5小程序設(shè)計(jì)搭建,石城網(wǎng)站營銷推廣歡迎石城等地區(qū)企業(yè)咨詢

  1. ?Session?的數(shù)據(jù)操作完全基于內(nèi)存;
  2. 使用?gcache?進(jìn)程緩存模塊控制數(shù)據(jù)過期;
  3. 使用文件存儲持久化存儲管理?Session?數(shù)據(jù);
  4. 當(dāng)且僅有當(dāng)?Session?被標(biāo)記為?dirty?時(shí)(數(shù)據(jù)有更新)才會執(zhí)行?Session?序列化并執(zhí)行文件持久化存儲;
  5. 當(dāng)且僅當(dāng)內(nèi)存中的?Session?不存在時(shí),才會從文件存儲中反序列化恢復(fù)?Session?數(shù)據(jù)到內(nèi)存中,降低IO調(diào)用;
  6. 序列化/反序列化使用的是標(biāo)準(zhǔn)庫的?json.Marshal?/?UnMarshal?方法;

從原理可知,當(dāng)?Session?為讀多寫少的場景中,?Session?的數(shù)據(jù)操作非常高效。

有個(gè)注意的細(xì)節(jié),由于文件存儲涉及到文件操作,為便于降低?IO?開銷并提高?Session?操作性能,并不是每一次?Session?請求結(jié)束后都會立即刷新對應(yīng)?Session?的?TTL?時(shí)間。而只有當(dāng)涉及到更新操作(被標(biāo)記為?dirty?)時(shí)才會立即刷新其?TTL?;針對于讀取請求,將會每隔一分鐘更新前一分鐘內(nèi)讀取操作對應(yīng)的?Session?文件?TTL?時(shí)間,以便于?Session?自動續(xù)活。

使用示例

package main

import (
	"github.com/GOgf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
	"github.com/gogf/gf/v2/os/gtime"
	"time"
)

func main() {
	s := g.Server()
	s.SetConfigWithMap(g.Map{
		"SessionMaxAge": time.Minute,
	})
	s.Group("/", func(group *ghttp.RouterGroup) {
		group.ALL("/set", func(r *ghttp.Request) {
			r.Session.Set("time", gtime.Timestamp())
			r.Response.Write("ok")
		})
		group.ALL("/get", func(r *ghttp.Request) {
			r.Response.Write(r.Session.Map())
		})
		group.ALL("/del", func(r *ghttp.Request) {
			r.Session.Clear()
			r.Response.Write("ok")
		})
	})
	s.SetPort(8199)
	s.Run()
}

在該實(shí)例中,為了方便觀察過期失效,我們將?Session?的過期時(shí)間設(shè)置為1分鐘。執(zhí)行后,

  1. 首先,訪問 http://127.0.0.1:8199/set 設(shè)置一個(gè)?Session?變量;
  2. 隨后,訪問 http://127.0.0.1:8199/get 可以看到該?Session?變量已經(jīng)設(shè)置并成功獲??;
  3. 接著,我們停止程序,并重新啟動,再次訪問 http://127.0.0.1:8199/get ,可以看到?Session?變量已經(jīng)從文件存儲中恢復(fù);
  4. 等待1分鐘后,再次訪問 http://127.0.0.1:8199/get 可以看到已經(jīng)無法獲取該?Session?,因?yàn)樵?Session?已經(jīng)過期;

名稱欄目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame Session-File
路徑分享:http://m.5511xx.com/article/cochsoe.html