Yêu cầu thg 12 31, 2019 3:09 CH 79 0 1
  • 79 0 1
+1

Angularjs cached state sau khi compile assets

Chia sẻ
  • 79 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 CÂU TRẢ LỜI


Đã trả lời thg 1 2, 2020 1:26 SA
+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.

Chia sẻ
Avatar Nam @Black.Box
thg 1 2, 2020 3:37 SA

@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

thg 1 2, 2020 7:19 SA

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí