Comments (6)
This is an interesting idea but we need a way to cleanup the cache when the server sends a full reload event because things changed that requires a reload and the expected behaviour is that the browser will ask for the new version of the changed file that could not be hot replaced.
It would also requires using some local-storage timestamp to differentiate between manual reload and "close the tab and re-open one minute later".
I've personally experimenting with content based caching that persists accros dev server restart, pinging @patak-dev that was once asking for real world timing of the difference between 304 and cached 200.
from vite.
I think content based caching is still an interesting idea to explore. I'm not going to be able to do it for a while as the current focus shifted after the perf optimizations we got in 5.1. Maybe something to look back again once the Environment API work lands.
@hediet do you have extensions installed? Would you check the time diff using an incognito window in that case?
Last time I checked, with an incognito window, the diff between having the dev tools open or not was not that big (https://x.com/patak_dev/status/1745427467480039580, https://x.com/patak_dev/status/1745681046681563153).
I agree it would be better to find a way to avoid the 304s though. If someone wants to explore in a PR, we could discuss the tradeoffs there.
from vite.
This is an interesting idea but we need a way to cleanup the cache when the server sends a full reload event
In that case, the server could change the url of all the resources (e.g. ?t=${t++}
) and just ask the browser to reload the html file (which will never be cached).
from vite.
Yes but in that case you trade off good reload on manual reload against bad reload on dev server reload. That's something to be discussed but for me the real solution is content based caching 👀
from vite.
Yes but in that case you trade off good reload on manual reload against bad reload on dev server reload.
Ah yes, I didn't think of that.
I'm not very aware of all the possible http caching strategies, can you clarify what you mean with content based caching?
from vite.
I mean using a hash of the content of the transformed file into the URL so that you don't need to invalidate the browser cache when nothing change. This requires a big shift in Vite philosophy to be 'on demand' and I'll wait after Vite 6 to see if this is something that can be added
from vite.
Related Issues (20)
- Support internal Sass/SCSS in HTML HOT 1
- module missing in production build
- Using Vite's programmatic API to inject HTML modifications HOT 3
- SSR transform drops `map.sources` when multiple `sources`
- lib打包模式,能否跟webpack一样,可以使用split chunks打包出一堆碎文件。
- Environment variable value not reloading when ".env changed, restarting server..." if process.env. is mutated once HOT 1
- Aliases are not resolved for CSS URLs with fragments HOT 1
- vite 打包出来的defineAsyncComponent异步加载文件不携带referrer HOT 2
- Generated an empty chunk: "lodash-unified" HOT 2
- Generated an empty chunk: "lodash-unified" HOT 1
- How do I use ENV variables in static .js files?
- SyntaxError: Identifier 'global' has already been declared while importing a json file with "global" key in SSR environment HOT 1
- Support Vanilla JS CSS Modules / CSS import attributes HOT 1
- css局部样式只限定格式为.module.的文件,无法手动配置,希望能用globalModulePaths属性进行判断 HOT 1
- 通过 raw 引入 ts 模块,代码未编译 HOT 3
- Globals are not accessible in a service worker
- When referencing an environment variable that doesnt exist, vite dumps your whole environment into the bundle as an object HOT 16
- Consider routers in Vite's development HOT 1
- bug: vite binary crashes during hosting a static build
- bug: Inconsistent path separator in resolveId() on Windows HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vite.