- Apple Watch Sport - ez is csak egy okosóra
- Mi nincs, grafén akku van: itt a Xiaomi 11T és 11T Pro
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- CMF Phone 2 Pro - a százezer forintos kérdés
- Honor 400 - és mégis mozog a kép
- Milyen okostelefont vegyek?
- Google Pixel topik
- Motorola Moto Tag - nyomom, követ
- iPhone topik
-
Mobilarena
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
-
Bzozoo
tag
De én nem erről beszéltem. Nem arról beszéltem, ahogy nálad van. Arról, hogy nem kell előre generált HTML-eket gyártani. A HTML-t akkor kell előállítaani, amikor a felhasználó lekéri a tartalmat. A felhasználó már csak a generált HTML-t kapja, ami akkor generáloódik szerver oldalon, amikor a felhasználó megnyitja az oldalt.
Node.js, Next.js, Nuxt.js mind tudja ezeket. -
martonx
veterán
Tanulni mindig jó és hasznos. Kiábrándítani nem akarlak, de ez nem olyan ötlet, amiből valaha is haszon lesz, mindegy, hogy a google látja-e vagy sem.
Tanuláshoz irányok, amiket javaslok:
1. Szerver oldali frameworkök. Ha eddig PHP-ztél, és elégedett vagy vele, akkor valami értelmesebb PHP frameworköt javaslok, mint pl. Laravel, Yii, vagy azt se tudom mik a trendi PHP frameworkök mostanában.
2. Kliens oldali frameworkök. Ezek valóban nem barátai a SEO-nak, de manapság egyre kevésbé megkerülhetőek. Vuejs, React, Angular, Svelte (még talán ez utóbbi a legmegfelelőbb a SEO barát weboldalak kicsit erősebb interaktív irányba felokosítására).
3. Ezt csak nagyon óvatosan mondom, mert ez nagyon szubjektív, de én a helyedben elgondolkodnék az aranyos, játszós nyelv PHP helyett (öhm, tudom hogy most szereztem egy rakás ellenséget, és sokan a szívükhöz kapnak), valami komolyabb, teljesítmény orientált nyelvre váltani backenden pl. Java (Spring), C# (Asp.Net Core), Go (nem tudom milyen frameworkök léteznek hozzá) mennek mostanában. Én személy szerint az Asp.Net Core-ra esküszök, de mondom ez nagyon szubjektív -
Taci
addikt
Sajnos nem jó a B terv, nagyon sok a probléma vele. Így mennék még egy kört:
Adott egy tartalommal feltöltött div:
<div id="content">Tartalom</div>
Meg lehet szakítani / kihagyni az adott div renderelését?
<div id="content">
<script>if (jsBetoltve == 0){ //content div betöltésének átugrása }</script>
Tartalom</div>
És az elrejtés (display:none, z-index stb.) sajnos nem ajánlott a SEO szempontjából, sok cikket átolvastam a témában.
Ott kell hogy legyen a tartalom a szerveren, az sem nagy baj, hogy azt a plusz pár kB-ot le kell tölteni, viszont eléggé zavaró, ahogy látszódik egy pillanatra, mielőtt a JS lenullázná a div-et. (Hiszen rendereli, ha már benne van.)
Köszönöm.
-
disy68
aktív tag
Nekem is hasonló megoldás jutott eszembe, mint sztanozsnak. Alapból elrejted a generált tartalmat, a betöltendő js-ben jön a függvény, ami betölti az új content-et, amit ellenőrzöl, hogy létezik-e, ha nem akkor megjeleníted a generált tartalmat, ha igen, akkor meghívod a betöltött js-ből az új content letöltést, ami a végén meg is jeleníti a betöltött tartalamat.
Ha a generált html-ben a képeket se akarod betölteni, amíg nem muszáj, akkor generáld úgy őket, hogy az src-t berakod data attribútumba amit akkor állítasz be, amikor nem töltött be js fájl.
-
martonx
veterán
-
martonx
veterán
Ha egy url /-el kezdődik, akkor az jelenti azt, hogy a root url-hez képest.
Azaz a helyes megoldás a "/js/script.j?v=1.0.0"
A teljes elérési útvonalas megoldás is jó még, de ennek csak akkor van értelme ha pl. CDN-t használsz.
A // kezdetű ugyanez, csak az megengedi mind a http, mind a https-t, egy időben divat volt, de http-t már senki nem használ, szóval értelmetlen. -
martonx
veterán
Ne lighthouse-ban (böngésző F12) nézd, hanem a pagespeed weboldalán a google-nek: PageSpeed Insights (web.dev)
És itt is igaziból mostanra egyedül a mobilos szám számít, a google már csak ezt veszi bele a rangsorolásba. -
-
martonx
veterán
Css és Js file-okat valóban érdemes összevonni (ezt hívják bundle-nek).
Viszont ettől függetlenül a SEO legnagyobb barátja a server side rendering. Minden más, ami nem server side renderelődik, kétesélyes hogy megjelenik a google bot számára.
800kbyte js, óriási. Ha a google bot valami css, js-t nem tud X másodperc (de ez inkább kisebb, mint 1) alatt betölteni, akkor inkább hagyja a fenébe, nincs ideje szarakodni a lassú weboldalakkal.
Nem véletlenül írtam le, hogy nem kellene mindeféle szart behúzkodni kliens oldalra, mint pl. axios, amik csak totál feleslegesen növelik a bundle size-ot, és lassítják le az oldalt, rontják a pagespeedet. Cserébe legalább semmit sem adnak -
disy68
aktív tag
Nem ismerem mélyen én se a témát, lehet, hogy a szolgáltatónál van valami hiba/rossz konfig, de az is lehet, hogy csak nálad lokál akadt össze valami és okozta a problémát és az új dns szerver miatt jött helyre a dolog
Amíg ez nem jön elő tömegesen a felhasználóknál, addig nem ölnék bele túl sok energiát, hogy kiderítsem mi és hol csúszott meg.
-
disy68
aktív tag
edit: állítsd át a dns kiszolgálód címét pl. 1.1.1.1-re vagy 8.8.8.8-ra esetleg (gépen/routeren) ha így jobb, akkor net szolgáltatód dns feloldása lassú (lassúságot nem, de olyat tapasztaltam szolgáltatói dns szervernél, hogy nem tudott feloldani valamit)
Nézd meg dev-tools (F12) network fülön, hogy pontosan meddig tartanak az egyes kérések vagy logold ki az összesnél, mikor indul és mikor jön válasz. Szerintem nem az "első" hívás tart sokáig, hanem az összes. Ellövöd a kéréseket egymás után és azok visszatérnek lassan, amiből azt látod, hogy az első lassú volt és ahhoz képest a többi meg gyors, mert async mennek a kérések. Persze így nulla kód mellett csak találgatni lehet.
-
Taci
addikt
Bocs a sok szövegért és a már 3. bejegyzésért egymás után, de közben a Network fül alatt ezt találtam:
Ez már nyilván nem JS-téma, és máris nézek ennek is utána, de igazából még most látok ilyet először (közben ezt kezdem el olvasni hozzá: [link] ) , nem tudom, merre kezdjek neki a "javításnak". Esetleg szerver oldalon kell valamit átállítanom? Vagy ilyen a szolgáltató sebessége?
Tudok ezzel valamit kezdeni? -
-
Taci
addikt
Annyira haladtam a témában, hogy valamiért a
keyup
-ot nem szereti, viszont akeydown
-nal és akeypress
-szel nincs baja. (Fórumbejegyzésekben találtam ezt az infót, kipróbáltam, és valóban.)Viszont azért használtam keyup-ot, mert az esemény után figyeltem, hogy változik-e a keresőmező tartalma (nem-e marad üres), és ha karatert ír be a user (tehát nem csak belekattint, és nyom egy shift-et), akkor megjelenik a mező törlése gomb.
var elementMainSearch = document.getElementById("mainSearch");
elementMainSearch.addEventListener("keyup", function(event) {
var elementMainSearchValue = elementMainSearch.elements[0].value;
console.log('elementMainSearchValue: ' + elementMainSearchValue);
if (elementMainSearchValue != ""){
//törlés gomb megjelenítése
}
}
Így ha beírtam, hogy
q
, akkor a konzolba kiírta, hogyelementMainSearchValue: q
, és megjelent a törlés gomb.Viszont így, hogy Safarival ez valamiért nem működik, muszáj vagyok keydown-ra vagy keypress-re cserélni a keyup-ot.
Ezekkel viszont az a baj, hogy az eventjük után még nem változik a keresőmező tartalma.
Tehát a fenti kód keydown-nal vagy keypress-szel ezeket az eredményeket adja:q
--> elementMainSearchValue:qw
--> elementMainSearchValue:q
qwe
--> elementMainSearchValue:qw
stb.Így ha csak 1 karaktert ír be a user a keresőmezőbe, nem lesz aktív a gomb, mert kell mellé még egy leütés.
Hogyan tudom szerintetek ezt megoldani?
Akár más struktúrával is. (Elindultam a beírt keycode-ok vizsgálatával (Ctrl - 17, Shift - 16, Tab - 9, Enter/Return - 13, Option - 18, Command - 91 stb.), de ott túl sokat kell lekezelni (minden gombot, ami szám vagy betű), az a megoldás nem tetszik.)UPD.:
Azinput
event lesz a jó, úgy látom. -
nevemfel
senior tag
A módszer ismert ( [link] ), a probléma meg az, hogy neked kell kézzel verzióznod az összes belinkelt forrásfájlt (css, js, img). Ha csak egy-két fájlról van szó, nem probléma, ha 15-ről, akkor, jó, ha sok szabadidőd van.
A másik lehetőség, hogy valami build toolt (pl. babel) használsz a css, js generáláshoz, ami megoldja, hogy ha a fájlok változnak, akkor a html-be beszúrt verziót automatikusan frissíti. De ez már haladó szint.
-
martonx
veterán
Jól használod. @nevemfel csak azt jegyezte meg, hogy ez ugyan egy tök jó módszer, csak nagyon törékeny, mert nagyon könnyű elfelejteni a huszonyolcadik file-ban is átírni a verziószámot. Vagy pedig külön automatizmust érdemes rá készíteni.
A böngésző teljes url alapján cache-el. És ezt használja ki ez a módszer. Az már csak, nekünk embereknek fontos, hogy olvasmányos ?v=1.0.0 legyen az url vége. Ez itt lehetne ?myversion=kiskutya is a böngészőnek édesmindegy. Ezt becacheli, és amíg pontosan ugyanez az url kell, addig cacheből szedi elő, amit kell. Ennyi.
-
martonx
veterán
A kettőt összekombinálni is lehet ám
Pl. csak a html file-ra beállítani, hogy mindig töltse le a böngésző. A többi file-t pedig hagyni a böngésző a megadott verzió szám alapján eldöntse, hogy le kell-e töltenie.Mert a nálad lévő módszer tök jó, de mi van akkor, ha maga a html file cachelődött be a böngészőben? Akkor hiába raksz ki egy új html file-t, amiben megemelted a css, js verziókat, ha erről a böngésző mit sem fog tudni, és vígan használja az előző html-edet, benne a régi verziójú css, js hivatkozásokkal?
-
Taci
addikt
Valami ilyesmivel kellene kezdeni:
var elementTest = document.getElementById("test");
elementTest.addEventListener("keyup", function(event) {
if (event.keyCode === 188) {
//vessző lett nyomva
}
}
Innen szedtem ki, hogy a vessző keycode-ja a 188.
A keyup akkor "ugrik", ha felengeded a billentyűt. Ha neked már az is kell, amikor lenyomja, akkor az a keydown lesz.
-
-
-
-
Annyi a pontosítás kedvéért, hogy nem input hanem textarea. A másik pedig, hogy számomra fontos, hogy a bemásolt szöveg tartalmazza az új sorokat és a tabokat, mert azok határolják nekem a szöveget, így azzal szeretnék dolgozni. Egyelőre az eddig linkelt dolgokkal nem értem el eredményt, de próbálkozom.
-
-
atyca
senior tag
if (event.target.value!="Off") {
this.getField("HONNAN").value = this.getField("LAKCÍM").AsStringvalue;
}
Jól gondolom, hogy hiányzott egy kapcsos zárójel a végéről?
Így legalább nem dobott hibaüzit, de sajnos nem működik.
Próbáltam AsString nélkül is.
Próbáltam a másik megoldás szerint gombra, egérkattintásra rakni, az sem jó. -
Röviden, hogyan működik:
Adott egy HTML felület, mely így indít:
<body onload="engine()">
Azengine()
JS csinál mindent. Az adatokat JSON fájlokból szedi, Cooke-kat nem használok. Az animáció, melyet egyinterval()
vezérel, előbb fut le, mint a betöltés.A JS kinézete:
function engine() {
animation();
uploaddata();
}Szerk: a JS is külső fájl, de még a Body előtt, a Head-ben kerül behívásra
-
Van egy betöltő animáció. Amit ha elindít és ellépek, képes megállítani. Ha pedig
_blank
elven nyitom meg, el sem indul, csak ha rámegyek. Illetve, a tartalom feltöltése is egy JS segítségével megy véghez, külső forrásból
Végülis számomra nem probléma, ha a felhasználókat nem zavarja. -
atyca
senior tag
-
atyca
senior tag
És ezt hova?
Én ide gondoltam, de így nem működik....
Gomb/Tulajdonságok/Műveletek
Ehhez a vezérlő eseményhez adjam a küldés-törlést is, vagy azokat a felengedéshez párosítsam?
Vagy eleve rosszul csinálom.......
/Esetleg ezt a kötelezően kitöltendő mezőkhöz kellene adni?/
(Ha átdobnám privátba a fájlt, ránéznél?) -
atyca
senior tag
Bocsi, és
.
(de tényleg azzal készítettem az űrlapot)
Ez irányú tudásom a nulla felé konvergál....
A problémát az okozza, hogy van egy küldés gomb, ami az egérgomb lenyomásakor küld és, és felengedéskor törli a mezők adatait.
Sajnos csak ezután érkezik figyelmeztetés a nem kitöltött kötelező mező(k)ről, lehet kitölteni újra.
Valahogy azt szeretném megoldani, hogy a küldés - törlés ne valósulhasson meg, ha nem teljes az ürlap.
Az elképzelés, hogy a kurzor gomb fölé vitelekor lefutna egy ellenőrző script. -
-
-
-
-
sztanozs
veterán
-
dqdb
nagyúr
Alapvetően hibás, amit csinálni szeretnél. Persze mindenki valami hasonlót szeretne elérni, amikor először kell aszinkron hívást beépíteni az addig szinkron homokozójába, de ettől még nem így kell
1. az adatbázis-lekérdezés előtt letiltasz minden beviteli mezőt
2. a lekérdezés befejezésekor lefutó callbackben engedélyezed a mezőket
A módszer hátránya, hogy a letiltás látható változást hoz, ami gyors lefutás esetében zavaró villogást eredményezhet.1. az adatbázis-lekérdezés előtt az előtérbe hozol egy teljes oldalt lefedő 100%-os átlátszóságú
DIV
-et, ami az egéreseményeket blokkolja az oldalon található elemek elől, a billentyűzetről neked kell gondoskodnod a fókusz valahová áthelyezésével
2. a lekérdezés befejezésekor lefutó callbackben a háttérbe küldöd aDIV
-et
A módszer hátránya, hogy lassú lefutás esetében a felhasználó azt érzékeli, hogy "lefagyott" az oldal, mert akárhová klikkel, nem reagál1. az adatbázis-lekérdezés előtt ugyanazt csinálod, mint az előző megoldásban és
setTimeout
segítségével ~300 ms késleltetéssel (a pontos értéket neked kell kikísérletezni, hogy a felhasználónak ne villogjon feleslegesen a képernyő, de ne érezze azt sem, hogy "lefagyott" az oldal)
2. ha asetTimeout
callback fut le először, akkor előtérbe hozol egy másik teljes képernyősDIV
-et, ami részlegesen átlátszó és rajta szöveggel, hogy várjon a user
2. a lekérdezés befejezésekor lefutó callbackben tolsz egycancelTimeout
-ot, és a háttérbe küldöd mindkétDIV
-et -
Zedz
addikt
-
-
martonx
veterán
Azért ez elég rizikós, és nem túl jövőálló megoldás, noha per pillanat még működik: Document.execCommand() - Web APIs | MDN (mozilla.org)
-
-
-
martonx
veterán
Egy kicsit tovább szépítve cstomee példáját: Edit fiddle - JSFiddle - Code Playground
Taci, az nem baj, hogy értelmesen leírod, hogy mit szeretnél, mert sokszor olyankor jön rá az ember, hogy még megfogalmazni sem tudja, nem hogy megvalósítani.
De egy működő jsfiddle példa száz szónál is többet ér -
cstomee
tag
Csak egy észrevételt ha megengedsz... Túl hosszasan írod le hogy mit szerenél ahelyett hogy 4-6 kulcsszót beírnál a google-be. pl: javascript mark text non case sensitive
jsFiddle
Nem tudom hogy ez kell e neked mert őszintén bevallom nem olvastam végig amit írtál, TLDR;.
Szerk.:
Időközben a példa mondat majdnem hasonló lettEgy kicsit bonyi a tiéd, de ha működik akkor jó ...
-
Taci
addikt
Készen is van az "ultimate kereső kijelölő"
https://jsfiddle.net/4awv16hg/16/
Rengeteg bug volt benne, de most már javítva vannak.
Illetve majdnem mind, mert ha vesszőre (",") keresek, meg infinte-loop-gyanús, pontnál (".") pedig kijelöl mindent mindenhol.
De látom, írt dqbd még valamit, ha visszajöttem, átnézem.
Köszi.
-
martonx
veterán
Netán ha kaphatnánk működő konkrét példát html-el? Az mondjuk így ránézésre látszik, hogy amit tippre pár sor kóddal meg lehetne oldani, te 29 teleírt sorból oldottad meg.
Szóval komolyabban bele se néztem, mert ez így biztos, hogy nem jóés nem működő példa híján, hogy az 5 sor helyett, 29 sorban hol a hiba....
-
-
martonx
veterán
Ez erősen attól függ.
1. ha valami mv* frameworköt használsz, akkor azoknál alap, hogy a html-be írod az eseménykezelőt. Pl. react, vuejs, svelte, angular
2. minden más esetben SZERINTEM az a tiszta, ha a js kódot elkülöníted a html-től, ugyanúgy ahogy css-t is külön illik kezelni, noha ez is mind mehetne html style-ba az elementekre. -
Silεncε
őstag
Én nem tudok olyanról, hogy el lehetne rejteni a JS kódot. Azok a data propertyk nem JS-t rejtenek, hanem a HTML5 szabványban már tudsz ilyen kezdetű attribútumokat definiálni, amikben bármilyen adatot tárolhatsz (például mint a be rakott kódrészben a gombhoz tartozó custom adatok). Errol itt tudsz olvasni: [link]
Az oldal védelméről: ha egy sima static oldalról van szó (tehát nincs input, vagy esetleg minden csak localban van tárolva) ott sok mindent nem tudnak támadni az oldalon keresztül (ott arra kell figyelni, hogy a host webserver ne legyen törtető, hogy mondjuk módosított, káros kódot tartalmazó fájlok ne kerülhessenek fel). Ha pedig van interakció (akár mondjuk egy régebbi, PHP-s oldal, akar egy újabb JS-es webapp, ami mögött van egy REST-API) ott úgyis a “backend” részen külön validalni kell mindent mert ugye az első számú szabály, a userben SOSEM bízunk (tsystems likes this
)
-
Taci
addikt
Jobb megoldás híján maradtam transform-piszkálásnál.
Én így oldottam meg, ha esetleg később valaki ilyen problémával találkozna:
function scrollSidePanelScrollContent(yToScroll){
var sidePanelScrollContent = document.getElementsByClassName("scroll-content")[0];
var transformCurrentValue = sidePanelScrollContent.style.transform;
var translate3DValueOfYpx = transformCurrentValue.split(",")[1];
var translate3DValueOfY = translate3DValueOfYpx.replace("px", "");
var scrollToY = parseInt(translate3DValueOfY) + yToScroll;
leftSidePanelScrollContent.style.transform = "translate3d(0px, " + scrollToY + "px, 0px)";
}
(Nyilván profibban is lehet, de így átlátható, mit-miért, alapnak tökéletes lehet.)
Ha valaki azért tudja a "rendes" megoldást erre a problémára, írjon majd.
Köszi. -
nevemfel
senior tag
Én azt javaslom, hogyha sok képet akarsz megjeleníteni, akkor használj progresszív képbetöltést, tehát csak akkor kérd le a képet, ha az oldal görgetése a képhez ér (vannak rá kész libek), vagy inkább használj valami galériát, ami szintén nem tölti be az összes képet előre, csak ha a képlapozás odaér (szintén ezernyi kész program van rá, ami előre is tölt x darabot, lapozás irányától függően.)
-
martonx
veterán
"és hátha valóban ez a jó megoldás" - nem hátha, hanem ez az egyetlen jó megoldás. Ez egy publikus topik, amellett hogy segítünk, én legalábbis arra is próbálok odafigyelni, hogy ne szerepeljenek hülyeségek, tévutak, másokat ne vigyenek félre hülyeségek, még ha valakinek éppen nagyon be is csípődött a saját ötlete (ami önmagában elvi szinten nem is lenne hülyeség, csak épp megvalósításkor minden elvi előnye el is úszna).
CDN-re nem kell sokat találgatni, valamelyik nagy felhő providernél be kell regelni, és elkezdeni használni. AWS, Azure, Google Cloud mindegyik tud CDN-t, és ezek mindegyike sokáig velünk lesz még szerintem. És ahogy mondtam a te szinteden ingyenesek, majd ha lesz napi több ezer látogatója az oldaladnak, akkor elkezdhetsz fizetni havi 1-2EUR-t nekik a CDN-ért. Regisztráció után X ingyenes keretet szoktak adni 1 évig, szóval nyugodtan próbáld ki, első hónap után látni fogod, hogy normál esetben mennyit kellene fizetned (tippre a te felhasználásoddal csak CDN esetben nullát).
-
martonx
veterán
Erre való az image srcset How to Use HTML5 “picture”, “srcset”, and “sizes” for Responsive Images (tutsplus.com)
Felejtsd már el a hálózati sebességet, lényegtelen. Valahogy nálad ez csípődött be, könyörgök felejtsd el!
Egy dologra kell figyelj, hogy a képernyő felbontásának megfelelő méretű képet add oda, és akkor mindenki boldog lesz.
Ha kicsi a képernyő (értsd mobil), akkor annak egy kicsi kép fog menni, ha nagy a képernyő, mert desktopon nézed, akkor annak egy nagy kép fog menni.
Egyébként is, attól, hogy valakinek lassabb a netje, még nem fogsz minden képet 32X32 pixelesen küldeni, hogy is nézne már ki. Meg ő tudja is magáról, hogy szar a netje és türelmesen kivárjaA linkelt példa szerintem egész jól bemutatja, elmagyarázza.
-
Most olvasom csak a problémádat.
Erre viszonylag egyszerűen szokták a megoldást megadni. Minden esetben a kisebbik felbontás tölt be és az hamar meg is jelenik. Közben a háttérben (elrejtve) betölti a nagyobb felbontású képeket is. Ha azzal végzett (ezt egy egyszerű js rutinnal le tudod követni), akkor megjelennek a nagyok és eltűnnek a kicsik.Ez eredményez "gyorsan" betöltő weboldalt minden eszközön és mire a felhasználó eljut odáig, hogy részketesen szemügyre vegye a médeatartalmat is, addigra már be vannak töltve a nagyobb, jobb minőségű képek.
Amennyiben vizsont nem ez lenne a cél, akkor nem szóltam
-
martonx
veterán
Továbbra is azon a véleményen vagyok, hogy maximálisan értelmetlen sebességet mérned, pláne ha ezzel a célod a betöltés gyorsítása
mivel a pagespeed a plusz js szüttyögés miatt még le is fog pontozni, miközben a probléma az, hogy ha meg akarsz jeleníteni egy 460X230-as képet, akkor nem egy 2Mbyte-os 4K-s képet kellene lerángatni netről, hanem egy 20kbyte-os pontosan 460X230-asat.
És ezen nem fog semmit segíteni, hogy te page initnél pár másodpercig hálózati sebességet méricskélsz, hogy eldöntsd majd hogy, mekkora képet szolgálj ki. -
martonx
veterán
Jól érted, pont ezt kell csinálnod. Szerver oldalon (ami most esetedben PHP) letöltöd, de nem tárolod, csak kiszolgálod a kicsire átméretezett képet.
És itt jön a történetben a csavar, hogy a rendszered fölé teszel egy CDN-t, ami egyébként kb. ingyenes, legalábbis ahhoz egész nagy terhelésednek kell lennie, hogy elérd a havi 1EUR-os fizetendő díját.
Azaz ez benne trükk, hogy te ezt tényleg nem fogod tárolni, ezt megoldja helyetted a CDN -
sztanozs
veterán
;TLDR - van API ami visszaadja, de nem támogatott minden környezetben (Mac, iOS, Firefox, IE). IP alapján lehet még esetleg vélelmezni:
Privát IP tartomány: wifi
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
Minden más (ISP és publikus): mobilnethttps://stackoverflow.com/questions/8598065/how-do-you-detect-3g-vs-wifi-connection-on-mobile-safari
-
martonx
veterán
Az teljesen mindegy, hogy a képek sajátok-e, és te tárolod-e őket
A link alapján le tudod szedni, át tudod méretezni, és vissza tudod adni a megfelelő méretben.
A böngészőnek küldött html-ben nem az lesz, hogy<a href="https://kulsodomain.com/ezegykulsokep.jpg">
hanem az hogy<a href="https://azenoldalam.hu/kepatmeretező?width=460&heigh=230&source=https://kulsodomain.com/ezegykulsokep.jpg">
-
martonx
veterán
Rosszul közelíted meg. Mindig éppen akkora képet adj vissza, amekkora kell, semmivel se nagyobbat. És igen, ehhez kelleni fog némi backend, amivel ezt megoldod, hogy mindig tökéletesre méretezett, optimálisan tömörített képet tudj szerezni.
Semmi értelme nincs tesztelgetni a kliens sávszélességét. -
sztanozs
veterán
Szvsz célszerű három különböző méretű fájllal dolgozni, hogy melyik jön le az adott időn belül (pl 3 sec): 10 kB, 100 kB, 1 MB
Ez alapján be tudod lőni a sebességet. Ha valamelyik nem jön le a kért időn belül akkor az annál egyel kisebb sebességet választod (és a következővel meg sem próbálkozol).
De lehet más módszerrel is próbálkozni (pl websocket és fix méretű (random) payload és azt nézed meg, hogy adott idő alatt mennyi csomag jön át).
Új hozzászólás Aktív témák
Hirdetés
- AKCIÓ! "ÚJ" Microsoft Surface 5 13,5 notebook - i5 1235U 8GB RAM 256GB SSD Intel Iris Xe IGP 27% áfa
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9700X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA! Épített KomPhone i5 13400F 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
- ÚJ Apple Macbook Air 15,3 M4 10C CPU/10C GPU/16GB/256GB - Ezüst -(2025) - 3 év gari - MAGYAR
- IBM/Lenovo Thinkpad T60
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged