Asked Dec 31st, 2019 3:09 p.m. 72 0 1
  • 72 0 1
+1

Angularjs cached state sau khi compile assets

Share
  • 72 0 1

Chào mọi người, project của e có sử dụng angularjs state để chuyển trang, nhưng gặp hiện tượng js bị cached trên server sau khi đã compile dẫn đến view không load lại được dữ liệu. Mọi người có ai gặp trường hợp này rồi giúp e giải pháp với ạ, thanks!

1 ANSWERS


Answered Jan 2nd, 2020 1:26 a.m.
+1

Thông thường khi build production thì mình hay config webpack để output ra các file kèm theo hash của content. Kiểu như này:

module.exports = {
  //...
  output: {
    filename: '[name].[hash].bundle.js'
  }
};

Khi đó tên của mỗi file sẽ có một cái mã hash:

  • Nếu content của file đó ko sửa đổi -> hash vẫn sẽ giữ nguyên -> file được cache
  • Nếu content của file bị sửa đổi -> hash của content sẽ thay đổi -> tên file khác với version trước -> hạn chế được việc bị cache.

Ngoài ra cũng có một cách khác mà mọi người hay dùng đó là thêm queryString vào các đường link load css, js kiểu như này:

https://viblo.asia/assets/style.css?ver=1.0.2-beta.10

Khi nối thêm version thay đổi thì đường link có query string mới nên cũng sẽ hạn chế được việc bị cache.

Share
Avatar Nam @Black.Box
Jan 2nd, 2020 3:37 a.m.

@huukimit Chính xác thì mình đang gặp vấn đề này cơ bạn ạ. Mình đã thử nhiều cách như trên stackover nhưng vẫn k đc https://stackoverflow.com/questions/37285018/angular-state-go-reload-true-shouldnt-reinitialize-the-abstract-father-cont

0
| Reply
Share
Jan 2nd, 2020 7:19 a.m.

@Black.Box MÌnh lại tưởng bạn bị cache css hihi.

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.