Angularjs cached state sau khi compile assets
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
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.
@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
@Black.Box MÌnh lại tưởng bạn bị cache css hihi.