Mozilla 도움말 검색

고객 지원 사기를 피하세요. 저희는 여러분께 절대로 전화를 걸거나 문자를 보내거나 개인 정보를 공유하도록 요청하지 않습니다. "악용 사례 신고"옵션을 사용하여 의심스러운 활동을 신고해 주세요.

자세히 살펴보기

Firefox will do double request for link header preloaded assets

more options

Hello

My website sends the following HTTP response header: ``` Link: </static/js/main.js>; rel=preload; as=script ``` And within the HTML, just before the body close, I have this: ``` <script src="/static/js/main.js"></script> ``` This causes the script to be loaded twice (in Firefox 85), consuming twice the bandwidth.

I also confirm that by setting `network.preload` to `false` in `about:config` I only get 1 request instead of 2.

Is there a solution to this? I obviously want to preload and only get 1 request.

Hello My website sends the following HTTP response header: ``` Link: </static/js/main.js>; rel=preload; as=script ``` And within the HTML, just before the body close, I have this: ``` <script src="/static/js/main.js"></script> ``` This causes the script to be loaded twice (in Firefox 85), consuming twice the bandwidth. I also confirm that by setting `network.preload` to `false` in `about:config` I only get 1 request instead of 2. Is there a solution to this? I obviously want to preload and only get 1 request.

모든 댓글 (10)

more options

You requesting twice the same file. Is Firefox behaves differently than any other browser in this example?

more options

I'm requesting it once, in HTML, but also send out the preload Link header to preload the asset before the parsing of HTML.

Yes, Chrome does the right thing, and only fetches the asset once.

This can be seen right now on some other sites I found which demonstrate this issue: - https://www.lefigaro.fr/ - https://www.theguardian.com/international

more options

Chrome only requests it once. I want to preload the JS before HTML parsing has started, that's why I use the Link http response header.

more options

I've never heard of using an HTTP Link header for preloading. However, it sounds as though it should be handled the same as a <link> tag.

Firefox 85 is the first version that implements rel="preload" for <link> tags by default (according to the compatibility table at https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content#browser_compatibility). So I think it's timely to file a bug, but perhaps you can find a simpler proof-of concept than the examples above.

https://bugzilla.mozilla.org/

more options

선택된 해결법

more options

Maybe somebody can set it to block the rel=preload meta bug.

I assume that the component got selected based on the screenshot that shows the Network Monitor, but should likely be "Core::Networking" like the meta tag.

글쓴이 cor-el 수정일시

more options

I could block rel=preload, but can't switch a component.

more options

This behavior is hard to test for normal use (i.e., not a forced reload).

Reviewing the timing after clearing cache and hitting the URL again, Firefox sometimes starts the second request for the script file before the first one completes, which seems contrary to historical optimizations. However, I also noticed in about:cache that the file appears in two different partitions (one with the origin and one with no origin). Perhaps there is a glitch with how preload works with cache partitioning.

more options

Sorry, I forgot to mention that to repro this you should "Disable Cache" in the Network tab.

In the mean time I had created https://bugzilla.mozilla.org/show_bug.cgi?id=1694134 so feel free to mark either as duplicate. Thanks!

more options

And if you are into some extra info which may help the technical investigation of this, this exact problem happens with fonts as well when the crossorigin option is set like this:

crossorigin

but not when set like this:

crossorigin="anonymous"

which according to MDN should be the same:

> Setting the attribute name to an empty value, like crossorigin or crossorigin="", is the same as anonymous.