optimize itv

main
肥羊 1 year ago
parent f70f6c2d5e
commit ec765cb0d9
  1. 15
      Golang/liveurls/itv.go

@ -13,8 +13,7 @@ import (
"time"
)
type Itv struct {
}
type Itv struct{}
var (
hostMappings = map[string]string{
@ -226,13 +225,13 @@ type cacheEntry struct {
func (i *Itv) HandleMainRequest(c *gin.Context, cdn, id string) {
key := cdn + "/" + id
startUrl, ok := programList[key]
url, ok := programList[key]
if !ok {
c.String(http.StatusNotFound, "id not found!")
return
}
data, redirectURL, err := getHTTPResponse(startUrl)
data, redirectURL, err := getHTTPResponse(url)
if err != nil {
c.String(http.StatusInternalServerError, err.Error())
return
@ -295,6 +294,7 @@ func getHTTPResponse(requestURL string) (string, string, error) {
resp, err := client.Get(requestURL)
if err != nil {
clearCache(requestURL) // 清除缓存失败的IP
return "", "", err
}
defer resp.Body.Close()
@ -306,6 +306,7 @@ func getHTTPResponse(requestURL string) (string, string, error) {
body, err := readResponseBody(resp)
if err != nil {
clearCache(requestURL) // 清除缓存失败的IP
return "", "", err
}
@ -333,7 +334,6 @@ func resolveIP(host string) string {
}
ip := ips[0].String()
// 初始缓存时间为0,以确保在成功请求后再更新缓存
dnsCache.Store(host, cacheEntry{ip: ip, expiry: now})
return ip
}
@ -347,6 +347,11 @@ func updateCacheTime(requestURL string, duration time.Duration) {
}
}
func clearCache(requestURL string) {
host := extractHost(requestURL)
dnsCache.Delete(host)
}
func extractHost(requestURL string) string {
parsedURL, err := url.Parse(requestURL)
if err != nil {

Loading…
Cancel
Save