当前位置: 首页 > wzjs >正文

建站公司新闻资讯wordpress描述设置

建站公司新闻资讯,wordpress描述设置,wordpress整站搬家教程,网站建设项目如何敏捷语言:golang 在抓取网站前,可能会多次读取文件中的cookie。频繁读取文件,性能不佳,故在go包中创建了一个map全局变量存储文件内容,只有键不存在时才去读取文件。 因为对go并不熟悉,才发现,不同请…

语言:golang

在抓取网站前,可能会多次读取文件中的cookie。频繁读取文件,性能不佳,故在go包中创建了一个map全局变量存储文件内容,只有键不存在时才去读取文件。
因为对go并不熟悉,才发现,不同请求读取到的是同一个变量(地址)。对于性能来说,这其实是好的。但出现一个问题:文件更新后,该变量的值依然是文件更新之前的内容,需要重新运行go包,而cookie随时可能失效而去更新,频繁重启这显然不现实。

解决方法
依旧采用map存储文件内容,但map的值为:1、文件的内容,2、文件的修改时间。
每次读取加读锁,并检查实际文件的修改时间,若与map中的值一致,则直接返回map中文件内容。
若不一致,则加写锁,再次检查修改时间,防止获取到写锁之前,文件已经修改。随后读取文件,获取文件中的内容,并更新内容和当前时间到map中。

type cacheEntry struct {content []stringmodTime time.Time
}var (fileCache = make(map[string]cacheEntry)mu        sync.RWMutexgroup     singleflight.Group
)func getFileModTime(path string) (time.Time, error) {fileInfo, err := os.Stat(path)if err != nil {return time.Time{}, err}return fileInfo.ModTime(), nil
}
func GetFile(file string) string {//合并请求result, err, _ := group.Do(file, func() (interface{}, error) {mu.RLock()entry, ok := fileCache[file]mu.RUnlock()path := GetFullPath(file)if ok {currentModTime, err := getFileModTime(path)if err != nil {return nil, err}if currentModTime.Equal(entry.modTime) {return entry.content, nil // 缓存有效}}mu.Lock()defer mu.Unlock()//再次检查,避免在获取到写锁的前一刻已经更新entry, ok = fileCache[file]if ok {currentModTime, err := getFileModTime(path)if err != nil {return nil, err}if currentModTime.Equal(entry.modTime) {return entry.content, nil // 缓存有效}}//读取文件并缓存content, err := os.ReadFile(path)if err != nil || len(content) == 0 {return nil, errors.New("文件不存在或为空")}//可选,按行分割内容lines := strings.Split(string(content), "\n")var branchContent []stringfor _, line := range lines {if line != "" {line = strings.TrimSpace(line)branchContent = append(branchContent, line)}}fileCache[file] = cacheEntry{content: branchContent,modTime: time.Now(),}return branchContent, nil})
}
http://www.dtcms.com/wzjs/785372.html

相关文章:

  • 做视频网站视频短片做的好微信商城网站
  • 网站策划专员所需知识wordpress 百度广告插件
  • 360网站地图怎么做竟网
  • 深圳品牌营销网站做网站用php如何学习
  • 域名除了做网站还能做什么网站的排版好看
  • 传统网站设计欧美模板网站
  • 免费建网站无广告网络管理系统论文
  • 南京做网站的公司怎样才能建设一歌网站
  • 做网站的那家公司好怎么做好网络销售技巧
  • 自己做网站 什么长沙游戏网站开发
  • 陕西营销型网站建设wordpress漂亮的主题
  • 昆明找工作哪个网站好app应用下载网站源码
  • 外贸建站有什么用韩国在中国做美食的视频网站有哪些
  • 可以免费建立网站吗网站即将 模板
  • 怎么做自己的导航网站网站优化排名易下拉软件
  • 网站规划和构成qq小程序api
  • 网页设计与制作精品课程网站台州建设质量监督网站
  • 网站建设的意义和目的做网站开发电脑配置
  • jsp ajax网站开发典型实例中国网站的特点
  • 自治区住房和城乡建设厅网站百度快速收录教程
  • 网站开发配置状态统计网页游戏排行榜2013前十名
  • 手机网站 制作安平营销型网站建设费用
  • 外贸网站建站公司广东深圳龙岗区邮政编码
  • 网页的创新型网站策划百度网站优化培训
  • 电子商务网站建设 项目规划书网页制作基础教程第二版课后题
  • 织梦后台如何做网站地图大宗交易平台官网
  • 电子商务网站开发合同福州如何做百度的网站
  • 做动态图的网站海淀网站建设怎么样
  • 北京市房山建设培训学校网站家装公司文案
  • 网站建设类论文格式网站制作网站建设需要多少钱