Skip to content

Commit

Permalink
resource: Avoid processing and storing same image for each language
Browse files Browse the repository at this point in the history
  • Loading branch information
bep committed Jan 7, 2018
1 parent 97c1866 commit 4b04db0
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
2 changes: 1 addition & 1 deletion resource/image.go
Expand Up @@ -219,7 +219,7 @@ func (i *Image) doWithImageConfig(action, spec string, f func(src image.Image, c
}

if conf.Rotate != 0 {
// Rotate it befor any scaling to get the dimensions correct.
// Rotate it before any scaling to get the dimensions correct.
src = imaging.Rotate(src, float64(conf.Rotate), color.Transparent)
}

Expand Down
11 changes: 10 additions & 1 deletion resource/image_cache.go
Expand Up @@ -51,6 +51,15 @@ func (c *imageCache) deleteByPrefix(prefix string) {

func (c *imageCache) getOrCreate(
spec *Spec, key string, create func(resourceCacheFilename string) (*Image, error)) (*Image, error) {

relTargetFilename := key

if c.pathSpec.Language != nil {
// Avoid do and store more work than needed. The language versions will in
// most cases be duplicates of the same image files.
key = strings.TrimPrefix(key, "/"+c.pathSpec.Language.Lang)
}

// First check the in-memory store, then the disk.
c.mu.RLock()
img, found := c.store[key]
Expand All @@ -68,7 +77,7 @@ func (c *imageCache) getOrCreate(
// but the count of processed image variations for this site.
c.pathSpec.ProcessingStats.Incr(&c.pathSpec.ProcessingStats.ProcessedImages)

r, err := spec.NewResourceFromFilename(nil, c.absPublishDir, cacheFilename, key)
r, err := spec.NewResourceFromFilename(nil, c.absPublishDir, cacheFilename, relTargetFilename)
notFound := err != nil && os.IsNotExist(err)
if err != nil && !os.IsNotExist(err) {
return nil, err
Expand Down

0 comments on commit 4b04db0

Please sign in to comment.