Просмотр исходного кода

support setting cache size and port via cmdline flags

Lucas Stadler лет назад: 11
Родитель
Сommit
842cb298ba
1 измененных файлов с 11 добавлено и 5 удалено
  1. 11 5
      go/favicon.go

+ 11 - 5
go/favicon.go

2
2
3
import (
3
import (
4
	"errors"
4
	"errors"
5
	"flag"
5
	"fmt"
6
	"fmt"
6
	"net/http"
7
	"net/http"
7
	"net/url"
8
	"net/url"
13
	"github.com/golang/groupcache/lru"
14
	"github.com/golang/groupcache/lru"
14
)
15
)
15
16
16
var port = "8080"
17
var port = flag.Int("p", 8080, "port [8080]")
18
var cacheSize = flag.Int("s", 10000, "cache size [10000]")
17
19
18
var faviconCache = lru.New(10000)
20
var faviconCache *lru.Cache
19
var lock sync.RWMutex
21
var lock sync.RWMutex
20
22
21
func main() {
23
func main() {
24
	flag.Parse()
25
26
	faviconCache = lru.New(*cacheSize)
27
22
	http.HandleFunc("/favicon", HandleGetFavicon)
28
	http.HandleFunc("/favicon", HandleGetFavicon)
23
	if p := os.Getenv("PORT"); p != "" {
29
	if p := os.Getenv("PORT"); p != "" {
24
		port = p
30
		flag.Set("p", p)
25
	}
31
	}
26
	fmt.Printf("listening on :%s\n", port)
27
	err := http.ListenAndServe(fmt.Sprintf(":%s", port), nil)
28
32
33
	fmt.Printf("listening on :%d\n", *port)
34
	err := http.ListenAndServe(fmt.Sprintf(":%d", *port), nil)
29
	if err != nil {
35
	if err != nil {
30
		fmt.Println("error: ", err)
36
		fmt.Println("error: ", err)
31
		os.Exit(1)
37
		os.Exit(1)