{"id":35362,"date":"2025-11-28T21:01:05","date_gmt":"2025-11-28T18:01:05","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/"},"modified":"2025-11-28T21:01:05","modified_gmt":"2025-11-28T18:01:05","slug":"chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/","title":{"rendered":"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm"},"content":{"rendered":"<p><body><\/p>\n<p>\u0130nternet ba\u011flant\u0131n\u0131z ne kadar h\u0131zl\u0131 olursa olsun, b\u00fcy\u00fck dosyalar\u0131 indirirken ya\u015fanan kesintiler veya &#8220;tak\u0131lmalar&#8221; herkesin kabusu. Tam da bu noktada devreye giren Retry Maniac, Chrome taray\u0131c\u0131n\u0131z i\u00e7in geli\u015ftirilen yenilik\u00e7i bir uzant\u0131 olarak indirme sorunlar\u0131na ak\u0131ll\u0131ca ve otomatik bir \u00e7\u00f6z\u00fcm sunuyor. Art\u0131k bitmek bilmeyen indirme sorunlar\u0131na veda etme zaman\u0131!<\/p>\n<p>Modern dijital d\u00fcnyada, gigabaytlarca b\u00fcy\u00fckl\u00fckteki dosyalar\u0131 indirmek g\u00fcnl\u00fck rutinimizin bir par\u00e7as\u0131 haline geldi. \u0130\u015fle ilgili raporlardan en yeni oyun g\u00fcncellemelerine, film ar\u015fivlerinden yaz\u0131l\u0131m paketlerine kadar pek \u00e7ok i\u00e7erik, internet \u00fczerinden indiriliyor. Ancak, bu s\u00fcre\u00e7 \u00e7o\u011fu zaman p\u00fcr\u00fczs\u00fcz ilerlemez. \u00d6zellikle T\u00fcrkiye gibi dinamik internet altyap\u0131s\u0131na sahip co\u011frafyalarda, a\u011f kesintileri, anl\u0131k ba\u011flant\u0131 kopmalar\u0131 veya sunucu taraf\u0131ndaki ge\u00e7ici aksakl\u0131klar, kullan\u0131c\u0131lar\u0131n indirme deneyimini kabusa \u00e7evirebilir. Yar\u0131s\u0131na gelmi\u015f bir indirme i\u015fleminin &#8220;A\u011f hatas\u0131&#8221; mesaj\u0131yla durdu\u011funu g\u00f6rmek, hele ki uzun saatler s\u00fcren bir beklemenin ard\u0131ndan, modern zaman\u0131n en sinir bozucu anlar\u0131ndan biridir.<\/p>\n<p>Peki, bu kesintiler neden bu kadar can s\u0131k\u0131c\u0131? Birincisi, zaman kayb\u0131. B\u00fcy\u00fck bir dosyan\u0131n indirilmesi, iyi bir ba\u011flant\u0131da bile belirli bir zaman al\u0131r. Kesintiye u\u011frayan bir indirme, ba\u015ftan ba\u015flamak zorunda kal\u0131nd\u0131\u011f\u0131nda bu s\u00fcreyi katbekat art\u0131r\u0131r. \u0130kincisi, bant geni\u015fli\u011fi israf\u0131. \u00d6zellikle kotal\u0131 internet kullan\u0131c\u0131lar\u0131 i\u00e7in, ayn\u0131 veriyi defalarca indirmek gereksiz kota t\u00fcketimi anlam\u0131na gelir. \u00dc\u00e7\u00fcnc\u00fcs\u00fc, moral bozuklu\u011fu ve \u00fcretkenlik kayb\u0131. \u00d6zellikle i\u015f ak\u0131\u015f\u0131nda kritik olan bir yaz\u0131l\u0131m g\u00fcncellemesi veya bir proje dosyas\u0131 indirmesinin sekteye u\u011framas\u0131, hem i\u015fleri aksat\u0131r hem de kullan\u0131c\u0131n\u0131n motivasyonunu d\u00fc\u015f\u00fcr\u00fcr. Bu sorunlar, g\u00fcn\u00fcm\u00fcz\u00fcn h\u0131z odakl\u0131 dijital ya\u015fam tarz\u0131na hi\u00e7 de uygun de\u011fildir.<\/p>\n<p>Mevcut \u00e7\u00f6z\u00fcmler genellikle yetersiz kal\u0131r. Taray\u0131c\u0131lar\u0131n kendi indirme y\u00f6neticileri genellikle basit &#8220;yeniden dene&#8221; butonlar\u0131 sunar ve bu da \u00e7o\u011fu zaman manuel m\u00fcdahale gerektirir. Kullan\u0131c\u0131, indirme durumunu s\u00fcrekli kontrol etmek, hata mesajlar\u0131n\u0131 g\u00f6rmek ve her seferinde manuel olarak yeniden deneme d\u00fc\u011fmesine basmak zorunda kal\u0131r. Bu durum, \u00f6zellikle arka planda uzun s\u00fcreli indirmeler yapanlar i\u00e7in pratik olmaktan uzakt\u0131r. Baz\u0131 kullan\u0131c\u0131lar harici indirme y\u00f6neticilerine y\u00f6nelir ancak bu da ek bir yaz\u0131l\u0131m kurma ve y\u00f6netme y\u00fck\u00fc getirir. Chrome&#8217;un zaten sahip oldu\u011fu entegre yap\u0131n\u0131n d\u0131\u015f\u0131na \u00e7\u0131kmak, \u00e7o\u011fu zaman daha az entegre ve daha az pratik bir deneyim sunar.<\/p>\n<p>\u0130\u015fte tam bu noktada Retry Maniac, t\u00fcm bu sorunlara ak\u0131ll\u0131 ve otomatik bir \u00e7\u00f6z\u00fcm sunmak \u00fczere do\u011fdu. Retry Maniac&#8217;\u0131n vizyonu, kullan\u0131c\u0131n\u0131n indirme deneyimini tamamen sorunsuz hale getirmektir. Bu uzant\u0131, indirme kesintilerini aktif olarak izler ve belirledi\u011finiz stratejilere g\u00f6re otomatik olarak yeniden denemeler yapar. Amac\u0131, a\u011fdaki anl\u0131k dalgalanmalar\u0131n, sunucu taraf\u0131ndaki ge\u00e7ici aksakl\u0131klar\u0131n veya di\u011fer k\u00fc\u00e7\u00fck p\u00fcr\u00fczlerin indirme i\u015fleminizi durdurmas\u0131na izin vermemektir. Retry Maniac, sizi manuel m\u00fcdahale zahmetinden kurtararak, indirmelerinizin her zaman m\u00fcmk\u00fcn oldu\u011funca sorunsuz bir \u015fekilde tamamlanmas\u0131n\u0131 sa\u011flar. Bu sayede, hem zamandan tasarruf eder hem de kota israf\u0131n\u0131 \u00f6nlersiniz. Uzant\u0131, Chrome&#8217;un kendi indirme API&#8217;lerini kullanarak taray\u0131c\u0131ya derinlemesine entegre olur ve size fark\u0131nda bile olmadan kesintisiz bir indirme deneyimi sunar. Adeta, indirmeleriniz i\u00e7in ki\u015fisel bir &#8220;can kurtaran&#8221; g\u00f6revi g\u00f6r\u00fcr.<\/p>\n<h2>Retry Maniac&#8217;\u0131n Temelleri: Yeniden Deneme Mekanizmalar\u0131 ve Chrome Uzant\u0131 Mimarisi<\/h2>\n<p>Retry Maniac gibi bir uzant\u0131n\u0131n kalbinde iki temel kavram yatar: ak\u0131ll\u0131 yeniden deneme mekanizmalar\u0131 ve Chrome uzant\u0131lar\u0131n\u0131n kendine \u00f6zg\u00fc mimarisi. Bu iki unsuru anlamak, Retry Maniac&#8217;\u0131n neden bu kadar etkili \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kavraman\u0131n anahtar\u0131d\u0131r.<\/p>\n<h3>Yeniden Deneme Mekanizmas\u0131 Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Yaz\u0131l\u0131m d\u00fcnyas\u0131nda &#8220;yeniden deneme mekanizmas\u0131&#8221; (retry mechanism), bir i\u015flemin ba\u015far\u0131s\u0131z olmas\u0131 durumunda, belirli bir stratejiye g\u00f6re i\u015flemi tekrarlama prensibini ifade eder. Bu mekanizmalar, ge\u00e7ici hatalar (transient errors) i\u00e7in kritik \u00f6neme sahiptir. A\u011f ba\u011flant\u0131s\u0131n\u0131n anl\u0131k kesilmesi, sunucunun k\u0131sa s\u00fcreli me\u015fguliyeti veya bir API \u00e7a\u011fr\u0131s\u0131n\u0131n zaman a\u015f\u0131m\u0131na u\u011framas\u0131 gibi durumlar, genellikle ge\u00e7ici hatalard\u0131r ve bir s\u00fcre sonra tekrar denendi\u011finde ba\u015far\u0131l\u0131 olma potansiyeli ta\u015f\u0131r.<\/p>\n<p>Retry Maniac \u00f6zelinde, bu mekanizma indirme i\u015flemleri i\u00e7in optimize edilmi\u015ftir. Uzant\u0131, bir indirme kesintiye u\u011frad\u0131\u011f\u0131nda hemen yeniden denemek yerine, belirli bir bekleme s\u00fcresi sonras\u0131nda i\u015flemi tekrarlar. Bu bekleme s\u00fcresi, genellikle &#8220;\u00fcstel geri \u00e7ekilme&#8221; (exponential backoff) stratejisiyle y\u00f6netilir. Yani, ilk deneme ba\u015far\u0131s\u0131z olursa k\u0131sa bir s\u00fcre beklenir, ikinci deneme de ba\u015far\u0131s\u0131z olursa daha uzun bir s\u00fcre beklenir ve bu b\u00f6yle devam eder. Bu strateji, sunucuyu gereksiz yere y\u00fcklemeyi \u00f6nler ve a\u011fdaki veya sunucudaki ge\u00e7ici sorunlar\u0131n kendini toparlamas\u0131na zaman tan\u0131r. Ayr\u0131ca, uzant\u0131, maksimum deneme say\u0131s\u0131 gibi limitler de belirler. Belirli bir say\u0131dan sonra hala ba\u015far\u0131 sa\u011flanamazsa, uzant\u0131 durumu kullan\u0131c\u0131ya bildirir ve daha kal\u0131c\u0131 bir sorun oldu\u011funa i\u015faret eder. Bu sayede hem ak\u0131ll\u0131ca hem de kaynaklar\u0131 verimli kullanarak hareket eder.<\/p>\n<p>Bir di\u011fer \u00f6nemli nokta ise a\u011f durumu alg\u0131lamad\u0131r. Retry Maniac gibi geli\u015fmi\u015f bir sistem, sadece indirme hatas\u0131na bakmakla kalmay\u0131p, cihaz\u0131n genel a\u011f ba\u011flant\u0131 durumunu da g\u00f6z \u00f6n\u00fcnde bulundurabilir. E\u011fer internet ba\u011flant\u0131s\u0131 tamamen kesikse, anlams\u0131zca yeniden deneme yapmak yerine, ba\u011flant\u0131n\u0131n geri gelmesini beklemek daha mant\u0131kl\u0131d\u0131r. Bu t\u00fcr detaylar, uzant\u0131n\u0131n sadece reaktif de\u011fil, proaktif bir \u00e7\u00f6z\u00fcm sunmas\u0131n\u0131 sa\u011flar. Yeniden deneme mekanizmalar\u0131, bu nedenle, sistemlerin daha dayan\u0131kl\u0131, g\u00fcvenilir ve kullan\u0131c\u0131 dostu olmas\u0131nda hayati bir rol oynar.<\/p>\n<h3>Chrome Uzant\u0131lar\u0131 Nas\u0131l \u00c7al\u0131\u015f\u0131r? Manifest V3 ve \u0130zinler<\/h3>\n<p>Chrome uzant\u0131lar\u0131, taray\u0131c\u0131n\u0131n i\u015flevselli\u011fini art\u0131ran k\u00fc\u00e7\u00fck yaz\u0131l\u0131m par\u00e7ac\u0131klar\u0131d\u0131r. Kendi \u00f6zel mimarileri sayesinde, kullan\u0131c\u0131 aray\u00fcz\u00fc, arka plan i\u015flemleri ve web sayfalar\u0131yla etkile\u015fim kurabilirler. Retry Maniac&#8217;\u0131 geli\u015ftirirken, bu mimarinin temel bile\u015fenlerini ve \u00f6zellikle de Manifest V3&#8217;\u00fcn getirdi\u011fi yenilikleri anlamak hayati \u00f6neme sahiptir.<\/p>\n<p>Bir Chrome uzant\u0131s\u0131 genellikle \u015fu ana bile\u015fenlerden olu\u015fur:<\/p>\n<ul>\n<li><strong>Manifest Dosyas\u0131 (<code>manifest.json<\/code>):<\/strong> Uzant\u0131n\u0131n kimlik kart\u0131d\u0131r. Ad\u0131, s\u00fcr\u00fcm\u00fc, a\u00e7\u0131klamas\u0131, sahip oldu\u011fu izinler ve di\u011fer t\u00fcm bile\u015fenlerinin yollar\u0131 bu dosyada tan\u0131mlan\u0131r.<\/li>\n<li><strong>Arka Plan Beti\u011fi (Background Script \/ Service Worker):<\/strong> Uzant\u0131n\u0131n &#8220;beyni&#8221;dir. Taray\u0131c\u0131 kapal\u0131yken bile \u00e7al\u0131\u015fabilen (Manifest V3 ile Service Worker olarak adland\u0131r\u0131l\u0131r) ve taray\u0131c\u0131 olaylar\u0131n\u0131 (sekme olu\u015fturma, indirme ba\u015flatma, a\u011f iste\u011fi vb.) dinleyip bunlara tepki veren k\u0131s\u0131md\u0131r. Retry Maniac&#8217;\u0131n indirme durumunu izleme ve yeniden deneme mant\u0131\u011f\u0131 burada yer al\u0131r.<\/li>\n<li><strong>\u0130\u00e7erik Beti\u011fi (Content Script):<\/strong> A\u00e7\u0131k web sayfalar\u0131na JavaScript ve CSS enjekte ederek, bu sayfalar\u0131n davran\u0131\u015f\u0131n\u0131 veya g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc de\u011fi\u015ftirebilir. Retry Maniac i\u00e7in do\u011frudan bir i\u00e7erik beti\u011fi gerekmeyebilir ancak kullan\u0131c\u0131ya indirme durumunu bir web sayfas\u0131nda g\u00f6stermek istersek kullan\u0131labilir.<\/li>\n<li><strong>Popup (A\u00e7\u0131l\u0131r Pencere):<\/strong> Uzant\u0131 ikonuna t\u0131kland\u0131\u011f\u0131nda a\u00e7\u0131lan k\u00fc\u00e7\u00fck HTML sayfas\u0131d\u0131r. Genellikle uzant\u0131n\u0131n ayarlar\u0131n\u0131 veya anl\u0131k durum bilgilerini g\u00f6sterir.<\/li>\n<li><strong>Se\u00e7enekler Sayfas\u0131 (Options Page):<\/strong> Daha kapsaml\u0131 ayarlar\u0131n yap\u0131labilece\u011fi ayr\u0131 bir taray\u0131c\u0131 sekmesi.<\/li>\n<\/ul>\n<p>Manifest V3, Chrome uzant\u0131 ekosistemine \u00f6nemli de\u011fi\u015fiklikler getirdi. En belirgin de\u011fi\u015fiklik, geleneksel arka plan sayfalar\u0131n\u0131n yerini <strong>Service Worker<\/strong>&#8216;lar\u0131n almas\u0131d\u0131r. Service Worker&#8217;lar, olay tabanl\u0131 \u00e7al\u0131\u015ft\u0131klar\u0131 ve kullan\u0131lmad\u0131klar\u0131nda kendini sonland\u0131rd\u0131klar\u0131 i\u00e7in daha performansl\u0131 ve g\u00fcvenlidirler. Bu, uzant\u0131lar\u0131n daha az kaynak t\u00fcketmesini sa\u011flar. Ayr\u0131ca, a\u011f isteklerini engellemek i\u00e7in kullan\u0131lan <code>webRequest<\/code> API&#8217;sinin yerini <strong><code>declarativeNetRequest<\/code> API<\/strong> alm\u0131\u015ft\u0131r. Bu API, daha deklaratif ve performansl\u0131 bir \u015fekilde a\u011f isteklerinin manip\u00fclasyonuna izin verir.<\/p>\n<p>Retry Maniac&#8217;\u0131n sorunsuz \u00e7al\u0131\u015fmas\u0131 i\u00e7in belirli <strong>izinlere<\/strong> ihtiyac\u0131 vard\u0131r. \u00d6rne\u011fin:<\/p>\n<ul>\n<li><code>downloads<\/code>: \u0130ndirme i\u015flemlerini izlemek, ba\u015flatmak ve y\u00f6netmek i\u00e7in.<\/li>\n<li><code>storage<\/code>: Kullan\u0131c\u0131 ayarlar\u0131n\u0131 (yeniden deneme say\u0131s\u0131, bekleme s\u00fcresi vb.) depolamak i\u00e7in.<\/li>\n<li><code>notifications<\/code>: Kullan\u0131c\u0131ya indirme durumlar\u0131 veya hatalar\u0131 hakk\u0131nda bildirim g\u00f6ndermek i\u00e7in.<\/li>\n<li><code>activeTab<\/code> (iste\u011fe ba\u011fl\u0131): E\u011fer kullan\u0131c\u0131 bir sayfadayken \u00f6zel bir indirme i\u015flemi tetiklemek istersek.<\/li>\n<\/ul>\n<p>Bu izinler, uzant\u0131n\u0131n sadece gerekli i\u015flevleri yerine getirmesini sa\u011flar ve g\u00fcvenlik prensiplerine uygun olarak en az ayr\u0131cal\u0131k (least privilege) ilkesini benimser. Bu sayede, Retry Maniac hem g\u00fc\u00e7l\u00fc hem de g\u00fcvenli bir uzant\u0131 olarak tasarlanabilir.<\/p>\n<blockquote>\n<p>Uzman \u0130pucu: Manifest V3 ile Service Worker&#8217;lar, idle (bo\u015fta) kald\u0131klar\u0131nda kapanabilirler. Bu durum, indirme olaylar\u0131n\u0131 ka\u00e7\u0131rmamak i\u00e7in kritik olabilir. Bu nedenle, t\u00fcm indirme olay dinleyicilerinizin Service Worker&#8217;\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcne uygun olarak kaydedildi\u011finden emin olun.<\/p>\n<\/blockquote>\n<h2>Retry Maniac&#8217;\u0131 Ad\u0131m Ad\u0131m Geli\u015ftirmek: Temel Fonksiyonlar ve Kodlama Pratikleri<\/h2>\n<p>\u015eimdi s\u0131ra geldi Retry Maniac&#8217;\u0131 somut ad\u0131mlarla hayata ge\u00e7irmeye. Bu b\u00f6l\u00fcmde, uzant\u0131n\u0131n temel bile\u015fenlerini nas\u0131l olu\u015fturaca\u011f\u0131m\u0131z\u0131 ve \u00e7ekirdek yeniden deneme mant\u0131\u011f\u0131n\u0131 nas\u0131l kodlayaca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Odak noktam\u0131z, i\u015flevselli\u011fi en basit ve anla\u015f\u0131l\u0131r \u015fekilde sunmak olacak.<\/p>\n<h3>Birincil Ad\u0131m: Manifest Dosyas\u0131n\u0131 Olu\u015fturmak<\/h3>\n<p>Her Chrome uzant\u0131s\u0131n\u0131n ba\u015flang\u0131\u00e7 noktas\u0131, uzant\u0131n\u0131n temel bilgilerini ve yeteneklerini tan\u0131mlayan <code>manifest.json<\/code> dosyas\u0131d\u0131r. Bu dosya, uzant\u0131n\u0131n Manifest V3 uyumlu oldu\u011funu, hangi script&#8217;leri kullanaca\u011f\u0131n\u0131 ve hangi izinlere ihtiya\u00e7 duydu\u011funu taray\u0131c\u0131ya bildirir.<\/p>\n<pre><code class=\"language-json\">\n{\n  \"manifest_version\": 3,\n  \"name\": \"Retry Maniac\",\n  \"version\": \"1.0\",\n  \"description\": \"Otomatik indirme yeniden denemeleri i\u00e7in bir Chrome uzant\u0131s\u0131.\",\n  \"permissions\": [\"downloads\", \"storage\", \"notifications\"],\n  \"background\": {\n    \"service_worker\": \"background.js\"\n  },\n  \"action\": {\n    \"default_popup\": \"popup.html\",\n    \"default_icon\": {\n      \"16\": \"icons\/icon16.png\",\n      \"48\": \"icons\/icon48.png\",\n      \"128\": \"icons\/icon128.png\"\n    }\n  },\n  \"icons\": {\n    \"16\": \"icons\/icon16.png\",\n    \"48\": \"icons\/icon48.png\",\n    \"128\": \"icons\/icon128.png\"\n  },\n  \"options_page\": \"options.html\"\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu <code>manifest.json<\/code> dosyas\u0131nda dikkat etmemiz gereken baz\u0131 noktalar \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>\"manifest_version\": 3<\/code>: Uzant\u0131n\u0131n Manifest V3 uyumlu oldu\u011funu belirtiriz. Bu, Service Worker kullan\u0131m\u0131n\u0131 ve yeni izin modelini gerektirir.<\/li>\n<li><code>\"permissions\"<\/code>: Retry Maniac'\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in gerekli olan <code>downloads<\/code> (indirme i\u015flemlerini y\u00f6netmek i\u00e7in), <code>storage<\/code> (kullan\u0131c\u0131 ayarlar\u0131n\u0131 kaydetmek i\u00e7in) ve <code>notifications<\/code> (kullan\u0131c\u0131ya bildirim g\u00f6ndermek i\u00e7in) izinlerini istiyoruz.<\/li>\n<li><code>\"background\"<\/code>: Arka plan beti\u011fimizin <code>background.js<\/code> oldu\u011funu ve bunun bir Service Worker olarak \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtiriz.<\/li>\n<li><code>\"action\"<\/code>: Taray\u0131c\u0131 ara\u00e7 \u00e7ubu\u011funda g\u00f6r\u00fcnecek uzant\u0131 ikonuna t\u0131kland\u0131\u011f\u0131nda <code>popup.html<\/code> sayfas\u0131n\u0131n a\u00e7\u0131laca\u011f\u0131n\u0131 ve ikonlar\u0131n yollar\u0131n\u0131 tan\u0131mlar\u0131z.<\/li>\n<li><code>\"options_page\"<\/code>: Daha detayl\u0131 ayarlar i\u00e7in bir se\u00e7enekler sayfas\u0131 olu\u015fturaca\u011f\u0131m\u0131z\u0131 belirtiriz.<\/li>\n<\/ul>\n<p>Bu dosya, uzant\u0131m\u0131z\u0131n temel kimli\u011fini ve yeteneklerini belirler. \u0130kon dosyalar\u0131n\u0131 da (\u00f6rne\u011fin <code>icons\/icon16.png<\/code>) olu\u015fturmay\u0131 unutmamak gerekir.<\/p>\n<h3>Ak\u0131ll\u0131 Yeniden Deneme Mant\u0131\u011f\u0131: <code>background.js<\/code> \u0130\u00e7eri\u011fi<\/h3>\n<p>Uzant\u0131n\u0131n kalbi, <code>background.js<\/code> dosyas\u0131nda yer alacak olan Service Worker'd\u0131r. Bu script, t\u00fcm indirme olaylar\u0131n\u0131 dinleyecek ve kesintiye u\u011frayan indirmeleri ak\u0131ll\u0131 bir \u015fekilde yeniden deneme mant\u0131\u011f\u0131n\u0131 uygulayacakt\u0131r.<\/p>\n<pre><code class=\"language-javascript\">\n\/\/ background.js\nlet retryQueue = {}; \/\/ Kesintiye u\u011frayan indirmeleri ve deneme say\u0131lar\u0131n\u0131 tutacak kuyruk\n\n\/\/ Ba\u015flang\u0131\u00e7 ayarlar\u0131 (varsay\u0131lan de\u011ferler)\nconst defaultSettings = {\n  maxRetries: 5,\n  initialRetryDelay: 5000, \/\/ 5 saniye\n  exponentialBackoff: true,\n  enabled: true\n};\n\n\/\/ Ayarlar\u0131 y\u00fckleme fonksiyonu\nasync function loadSettings() {\n  const result = await chrome.storage.sync.get(defaultSettings);\n  return result;\n}\n\n\/\/ \u0130ndirme durumu de\u011fi\u015fti\u011finde tetiklenecek dinleyici\nchrome.downloads.onChanged.addListener(async (delta) => {\n  if (!delta.state || delta.state.current !== \"interrupted\") {\n    \/\/ Sadece kesintiye u\u011frayan indirmelerle ilgileniyoruz.\n    return;\n  }\n\n  const settings = await loadSettings();\n  if (!settings.enabled) {\n    console.log(\"Retry Maniac devre d\u0131\u015f\u0131. \u0130ndirme yeniden denenmeyecek.\");\n    return;\n  }\n\n  chrome.downloads.search({ id: delta.id }, async (downloads) => {\n    if (!downloads || downloads.length === 0) {\n      return;\n    }\n\n    const failedDownload = downloads[0];\n    const downloadId = failedDownload.id;\n    const downloadUrl = failedDownload.url;\n    const downloadFilename = failedDownload.filename;\n\n    \/\/ Kuyrukta yoksa veya deneme say\u0131s\u0131 maksimuma ula\u015fmad\u0131ysa\n    if (!retryQueue[downloadId]) {\n      retryQueue[downloadId] = { count: 0, url: downloadUrl, filename: downloadFilename };\n    }\n\n    retryQueue[downloadId].count++;\n\n    if (retryQueue[downloadId].count <= settings.maxRetries) {\n      let delay = settings.initialRetryDelay;\n      if (settings.exponentialBackoff) {\n        delay = delay * Math.pow(2, retryQueue[downloadId].count - 1);\n      }\n\n      console.log(<code>\u0130ndirme kesintiye u\u011frad\u0131: ${downloadFilename}. ${retryQueue[downloadId].count}. deneme i\u00e7in ${delay \/ 1000} saniye bekleniyor.<\/code>);\n      \n      chrome.notifications.create({\n        type: \"basic\",\n        iconUrl: \"icons\/icon48.png\",\n        title: \"Retry Maniac\",\n        message: <code>${downloadFilename} indirmesi kesintiye u\u011frad\u0131. ${retryQueue[downloadId].count}. deneme ba\u015flat\u0131l\u0131yor...<\/code>,\n        priority: 1\n      });\n\n      setTimeout(() => {\n        chrome.downloads.download({ url: downloadUrl, filename: downloadFilename }, (newId) => {\n          if (chrome.runtime.lastError) {\n            console.error(\"Yeniden deneme ba\u015flat\u0131lamad\u0131:\", chrome.runtime.lastError.message);\n            \/\/ Hata durumunda kuyruktan sil veya tekrar deneme say\u0131s\u0131n\u0131 d\u00fc\u015f\u00fcr\n          } else {\n            console.log(<code>Yeniden deneme ba\u015flat\u0131ld\u0131, yeni ID: ${newId} (Eski ID: ${downloadId})<\/code>);\n            \/\/ Ba\u015far\u0131l\u0131 yeniden denemeden sonra eski id'yi kuyruktan kald\u0131r\n            \/\/ Yeni id'yi takip etmek gerekebilir e\u011fer Chrome indirme objesi de\u011fi\u015fiyorsa\n            delete retryQueue[downloadId]; \n          }\n        });\n      }, delay);\n    } else {\n      console.log(<code>\u0130ndirme (${downloadFilename}) maksimum yeniden deneme say\u0131s\u0131na ula\u015ft\u0131.<\/code>);\n      chrome.notifications.create({\n        type: \"basic\",\n        iconUrl: \"icons\/icon48.png\",\n        title: \"Retry Maniac\",\n        message: <code>${downloadFilename} indirmesi \u00e7ok say\u0131da ba\u015far\u0131s\u0131z denemenin ard\u0131ndan iptal edildi.<\/code>,\n        priority: 2\n      });\n      delete retryQueue[downloadId]; \/\/ Kuyruktan kald\u0131r\n    }\n  });\n});\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011fu, Retry Maniac'\u0131n temel i\u015fleyi\u015fini g\u00f6sterir. \u0130\u015fte \u00f6nemli noktalar\u0131:<\/p>\n<ul>\n<li><code>chrome.downloads.onChanged.addListener<\/code>: Bu, Chrome'un indirme durumundaki de\u011fi\u015fiklikleri dinlememizi sa\u011flayan bir API'dir. <code>delta<\/code> nesnesi, de\u011fi\u015fen indirme hakk\u0131nda bilgi i\u00e7erir.<\/li>\n<li><code>delta.state && delta.state.current === \"interrupted\"<\/code>: Yaln\u0131zca indirme \"kesintiye u\u011frad\u0131\" (interrupted) durumuna ge\u00e7ti\u011finde tetikleniriz.<\/li>\n<li><code>chrome.downloads.search<\/code>: Kesintiye u\u011frayan indirme hakk\u0131nda daha fazla detay (URL, dosya ad\u0131 vb.) almak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>retryQueue<\/code>: Her indirme i\u00e7in deneme say\u0131s\u0131n\u0131 tutan basit bir JavaScript nesnesidir.<\/li>\n<li>\u00dcstel Geri \u00c7ekilme (Exponential Backoff): <code>delay = delay * Math.pow(2, retryQueue[downloadId].count - 1);<\/code> sat\u0131r\u0131, her yeni denemede bekleme s\u00fcresini katlayarak art\u0131r\u0131r. Bu, hem sunucuya gereksiz y\u00fck bindirmeyi \u00f6nler hem de ge\u00e7ici sorunlar\u0131n \u00e7\u00f6z\u00fclmesi i\u00e7in daha fazla zaman tan\u0131r.<\/li>\n<li><code>chrome.notifications.create<\/code>: Kullan\u0131c\u0131ya indirme durumu hakk\u0131nda g\u00f6rsel bildirimler g\u00f6ndermek i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>chrome.downloads.download<\/code>: Yeniden deneme i\u015flemini ba\u015flatmak i\u00e7in orijinal URL ve dosya ad\u0131yla yeni bir indirme iste\u011fi g\u00f6nderir.<\/li>\n<li><code>loadSettings<\/code> ve <code>defaultSettings<\/code>: Uzant\u0131n\u0131n ayarlar\u0131n\u0131 <code>chrome.storage.sync<\/code> \u00fczerinden almas\u0131n\u0131 ve varsay\u0131lan de\u011ferleri kullanmas\u0131n\u0131 sa\u011flar. Bu sayede kullan\u0131c\u0131, yeniden deneme say\u0131s\u0131n\u0131, gecikmeyi ve uzant\u0131n\u0131n etkin olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilir.<\/li>\n<\/ul>\n<h3>Kullan\u0131c\u0131 Aray\u00fcz\u00fc ve Ayarlar: <code>popup.html<\/code> ve <code>options.html<\/code><\/h3>\n<p>Kullan\u0131c\u0131lar\u0131n uzant\u0131y\u0131 kolayca y\u00f6netebilmesi i\u00e7in basit bir popup ve daha detayl\u0131 ayarlar i\u00e7in bir options sayfas\u0131 sunmak \u00f6nemlidir. <code>popup.html<\/code> genellikle uzant\u0131n\u0131n h\u0131zl\u0131ca a\u00e7\u0131l\u0131p kapat\u0131lmas\u0131n\u0131 veya anl\u0131k durumunu g\u00f6sterir. <code>options.html<\/code> ise daha kapsaml\u0131 yap\u0131land\u0131rmalar i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-html\">\n<!-- popup.html -->\n<!DOCTYPE html>\n<html lang=\"tr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Retry Maniac<\/title>\n    <style>\n        body { font-family: Arial, sans-serif; width: 250px; padding: 10px; }\n        h3 { color: #333; margin-top: 0; }\n        button { background-color: #4CAF50; color: white; padding: 8px 15px; border: none; cursor: pointer; border-radius: 4px; }\n        button:hover { opacity: 0.9; }\n        .status-text { margin-top: 10px; font-weight: bold; }\n        .status-text.enabled { color: green; }\n        .status-text.disabled { color: red; }\n        .settings-link { display: block; margin-top: 15px; text-align: center; color: #007bff; text-decoration: none; }\n        .settings-link:hover { text-decoration: underline; }\n    <\/style>\n<\/head>\n<body>\n    <h3>Retry Maniac<\/h3>\n    <div>\n        <label for=\"toggleEnabled\">Uzant\u0131y\u0131 Etkinle\u015ftir\/Devre D\u0131\u015f\u0131 B\u0131rak:<\/label>\n        <input type=\"checkbox\" id=\"toggleEnabled\">\n    <\/div>\n    <div class=\"status-text\" id=\"statusMessage\"><\/div>\n    <a href=\"options.html\" target=\"_blank\" class=\"settings-link\">Ayarlar\u0131 Y\u00f6net<\/a>\n    <script src=\"popup.js\"><\/script>\n<\/body>\n<\/html>\n<\/pre>\n<p><\/code><\/p>\n<pre><code class=\"language-javascript\"><\/pre>\n<p><\/code><br \/>\n\/\/ popup.js<br \/>\ndocument.addEventListener('DOMContentLoaded', () => {<br \/>\n  const toggleEnabled = document.getElementById('toggleEnabled');<br \/>\n  const statusMessage = document.getElementById('statusMessage');<\/p>\n<p>  \/\/ Ayarlar\u0131 y\u00fckle ve UI'y\u0131 g\u00fcncelle<br \/>\n  chrome.storage.sync.get('enabled', (data) => {<br \/>\n    const isEnabled = data.enabled !== undefined ? data.enabled : true; \/\/ Varsay\u0131lan olarak etkin<br \/>\n    toggleEnabled.checked = isEnabled;<br \/>\n    updateStatusMessage(isEnabled);<br \/>\n  });<\/p>\n<p>  \/\/ De\u011fi\u015fiklikleri kaydet<br \/>\n  toggleEnabled.addEventListener('change', () => {<br \/>\n    const isEnabled = toggleEnabled.checked;<br \/>\n    chrome.storage.sync.set({ enabled: isEnabled }, () => {<br \/>\n      updateStatusMessage(isEnabled);<br \/>\n      console.log(<code>Retry Maniac durumu: ${isEnabled ? &#039;Etkin&#039; : &#039;Devre D\u0131\u015f\u0131&#039;}<\/code>);<br \/>\n    });<br \/>\n  });<\/p>\n<p>  function updateStatusMessage(isEnabled) {<br \/>\n    if (isEnabled) {<br \/>\n      statusMessage.textContent = \"Retry Maniac Etkin.\";<br \/>\n      statusMessage.className = \"status-text enabled\";<br \/>\n    } else {<br \/>\n      statusMessage.textContent = \"Retry Maniac Devre D\u0131\u015f\u0131.\";<br \/>\n      statusMessage.className = \"status-text disabled\";<br \/>\n    }<br \/>\n  }<br \/>\n});<br \/>\n<\/code><\/p>\n<p><code>options.html<\/code> ve buna ba\u011fl\u0131 <code>options.js<\/code> dosyalar\u0131 ise, maksimum deneme say\u0131s\u0131, ilk deneme gecikmesi, \u00fcstel geri \u00e7ekilme gibi daha detayl\u0131 ayarlar\u0131n yap\u0131lmas\u0131n\u0131 sa\u011flar. <code>chrome.storage.sync<\/code> API'si, bu ayarlar\u0131 kullan\u0131c\u0131lar\u0131n Chrome hesaplar\u0131yla senkronize ederek farkl\u0131 cihazlarda da eri\u015filebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Bu temel ad\u0131mlar\u0131 takip ederek, Retry Maniac'\u0131n \u00e7ekirdek i\u015flevselli\u011fini olu\u015fturan manifest dosyas\u0131n\u0131, arka plan mant\u0131\u011f\u0131n\u0131 ve basit bir kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc geli\u015ftirmi\u015f olursunuz. Uzant\u0131n\u0131n y\u00fcklenebilir hale gelmesi i\u00e7in t\u00fcm bu dosyalar\u0131n bir klas\u00f6rde toplanmas\u0131 ve Chrome'un uzant\u0131lar sayfas\u0131ndan \"Geli\u015ftirici modu\" a\u00e7\u0131kken \"Paketlenmemi\u015f uzant\u0131 y\u00fckle\" se\u00e7ene\u011fiyle y\u00fcklenmesi yeterlidir.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve \u0130leri D\u00fczey Optimizasyonlar: Retry Maniac'\u0131 Daha Ak\u0131ll\u0131 Hale Getirmek<\/h2>\n<p>Retry Maniac'\u0131n temel i\u015flevselli\u011fini geli\u015ftirdikten sonra, uzant\u0131y\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131nda daha sa\u011flam, verimli ve kullan\u0131c\u0131 dostu hale getirmek i\u00e7in ileri d\u00fczey optimizasyonlara odaklanabiliriz. Bu b\u00f6l\u00fcmde, uzant\u0131n\u0131n kar\u015f\u0131la\u015ft\u0131\u011f\u0131 potansiyel zorluklara nas\u0131l ak\u0131ll\u0131ca \u00e7\u00f6z\u00fcmler bulabilece\u011fimizi ve kullan\u0131c\u0131 deneyimini nas\u0131l zenginle\u015ftirebilece\u011fimizi inceleyece\u011fiz.<\/p>\n<h3>Vaka Analizi: B\u00fcy\u00fck Dosya \u0130ndirmelerinde A\u011f Kesintileriyle Ba\u015fa \u00c7\u0131kmak<\/h3>\n<p>Hayal edin: Yeni \u00e7\u0131kan, 10 GB boyutundaki pop\u00fcler bir bilgisayar oyununu indiriyorsunuz. \u0130ndirme i\u015flemi saatler s\u00fcrebilir ve bu s\u00fcre\u00e7te evdeki di\u011fer cihazlar interneti kullanabilir, internet servis sa\u011flay\u0131c\u0131n\u0131z anl\u0131k bir kesinti ya\u015fayabilir veya oyun sunucusunda k\u0131sa s\u00fcreli yo\u011funluk olu\u015fabilir. Tam da %85'e gelmi\u015fken indirme durur ve \"A\u011f hatas\u0131\" mesaj\u0131yla kar\u015f\u0131la\u015f\u0131rs\u0131n\u0131z. \u0130\u015fte bu senaryo, Retry Maniac'\u0131n parlad\u0131\u011f\u0131 anlardan biridir.<\/p>\n<p>Normalde bu durumda manuel olarak yeniden denemeniz gerekir ve bu da indirme i\u015fleminin ba\u015ftan ba\u015flamas\u0131na veya kald\u0131\u011f\u0131 yerden devam etse bile gecikmeye yol a\u00e7ar. Retry Maniac devreye girdi\u011finde ise, uzant\u0131 arka planda bu kesintiyi alg\u0131lar. Belirledi\u011finiz ayarlara g\u00f6re (\u00f6rne\u011fin 5 saniye bekleme s\u00fcresi, ard\u0131ndan \u00fcstel geri \u00e7ekilme ile 10, 20, 40 saniye vb. bekleyerek yeniden deneme), otomatik olarak bir yeniden deneme i\u015flemi ba\u015flat\u0131r. Kullan\u0131c\u0131ya bir bildirimle durum hakk\u0131nda bilgi verilir (\"Oyun indirmesi kesintiye u\u011frad\u0131, 1. deneme ba\u015flat\u0131l\u0131yor...\").<\/p>\n<p>A\u011f k\u0131sa s\u00fcrede normale d\u00f6nd\u00fc\u011f\u00fcnde, Retry Maniac indirmeyi otomatik olarak kald\u0131\u011f\u0131 yerden devam ettirir (e\u011fer sunucu resume deste\u011fi sa\u011fl\u0131yorsa, ki \u00e7o\u011fu modern indirme sunucusu sa\u011flar). Kullan\u0131c\u0131, bilgisayar\u0131n\u0131n ba\u015f\u0131nda olmasa bile, indirme i\u015fleminin devam etti\u011finden emin olur. Bu, kullan\u0131c\u0131n\u0131n hem zamandan hem de kota miktar\u0131ndan tasarruf etmesini sa\u011flar. Ayr\u0131ca, g\u00fcn\u00fcn sonunda indirme tamamland\u0131\u011f\u0131nda, uzant\u0131 \"Oyun ba\u015far\u0131yla indirildi, Retry Maniac sayesinde 3 kesintiye ra\u011fmen tamamland\u0131!\" gibi bilgilendirici bir mesaj g\u00f6sterebilir. Bu t\u00fcr bir vaka, uzant\u0131n\u0131n \"set it and forget it\" (ayarla ve unut) felsefesini nas\u0131l ba\u015far\u0131l\u0131 bir \u015fekilde uygulad\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h3>Performans ve Kaynak Y\u00f6netimi: Ak\u0131ll\u0131 Zamanlama ve Bellek Kullan\u0131m\u0131<\/h3>\n<p>Chrome uzant\u0131lar\u0131, taray\u0131c\u0131n\u0131n performans\u0131n\u0131 etkileyebilecek potansiyele sahiptir. Bu nedenle Retry Maniac gibi bir uzant\u0131y\u0131 geli\u015ftirirken performans ve kaynak y\u00f6netimi kritik \u00f6neme sahiptir. Manifest V3 ile gelen Service Worker'lar, bu konuda \u00f6nemli avantajlar sunar.<\/p>\n<ul>\n<li><strong>Service Worker Ya\u015fam D\u00f6ng\u00fcs\u00fc:<\/strong> Service Worker'lar, sadece bir olaya ihtiya\u00e7 duyuldu\u011funda aktif hale gelir ve i\u015fleri bitti\u011finde kendini sonland\u0131r\u0131r. Bu durum, s\u00fcrekli \u00e7al\u0131\u015fan bir arka plan beti\u011fine g\u00f6re \u00e7ok daha verimlidir. Retry Maniac'\u0131n indirme dinleyicisi, sadece <code>downloads.onChanged<\/code> olay\u0131 tetiklendi\u011finde uyan\u0131r. Bu, uzant\u0131n\u0131n bo\u015fta kald\u0131\u011f\u0131nda neredeyse hi\u00e7 kaynak t\u00fcketmemesini sa\u011flar.<\/li>\n<li><strong>Gereksiz Dinleyicilerden Ka\u00e7\u0131nma:<\/strong> Yaln\u0131zca ger\u00e7ekten ihtiyac\u0131m\u0131z olan olay dinleyicilerini kaydetmek, bellek kullan\u0131m\u0131n\u0131 ve i\u015flemci y\u00fck\u00fcn\u00fc minimize eder. \u00d6rne\u011fin, e\u011fer sadece indirme kesintileriyle ilgileniyorsak, tamamlanan veya devam eden indirmeleri s\u00fcrekli olarak izleyen ek dinleyicilere gerek yoktur.<\/li>\n<li><strong><code>chrome.storage.sync<\/code> Kullan\u0131m\u0131:<\/strong> Kullan\u0131c\u0131 ayarlar\u0131n\u0131 depolarken <code>localStorage<\/code> yerine <code>chrome.storage.sync<\/code> kullanmak, ayarlar\u0131n kullan\u0131c\u0131n\u0131n Google hesab\u0131yla senkronize edilmesini sa\u011flar ve kullan\u0131c\u0131 farkl\u0131 cihazlarda uzant\u0131y\u0131 kulland\u0131\u011f\u0131nda ayarlar\u0131n\u0131 kaybetmez. Ancak, bu API'nin asenkron yap\u0131s\u0131 ve kotalar\u0131 oldu\u011funu unutmamak gerekir. B\u00fcy\u00fck veriler i\u00e7in uygun de\u011fildir, ancak Retry Maniac'\u0131n ayarlar\u0131 i\u00e7in idealdir.<\/li>\n<li><strong><code>declarativeNetRequest<\/code> (\u0130leri D\u00fczey D\u00fc\u015f\u00fcnce):<\/strong> E\u011fer Retry Maniac sadece indirme hatalar\u0131n\u0131 de\u011fil, ayn\u0131 zamanda belirli a\u011f isteklerini de manip\u00fcle etme ihtiyac\u0131 duysayd\u0131 (\u00f6rne\u011fin, CDN'ler aras\u0131 ge\u00e7i\u015f yapma), <code>declarativeNetRequest<\/code> API'si <code>webRequest<\/code> API'sine g\u00f6re daha performansl\u0131 bir alternatif sunabilirdi. Bu API, taray\u0131c\u0131 motorunun i\u00e7inde \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in JavaScript'in s\u00fcrekli \u00e7al\u0131\u015fmas\u0131na gerek kalmaz ve daha az kaynak t\u00fcketir.<\/li>\n<\/ul>\n<h3>Kullan\u0131c\u0131 Deneyimini Zenginle\u015ftirmek: Bildirimler ve \u0130statistikler<\/h3>\n<p>Bir uzant\u0131n\u0131n faydas\u0131, sadece i\u015flevselli\u011fiyle de\u011fil, ayn\u0131 zamanda kullan\u0131c\u0131yla nas\u0131l etkile\u015fim kurdu\u011fuyla da \u00f6l\u00e7\u00fcl\u00fcr. Retry Maniac'\u0131n kullan\u0131c\u0131 deneyimini zenginle\u015ftirmek i\u00e7in \u015funlar yap\u0131labilir:<\/p>\n<ul>\n<li><strong>Detayl\u0131 Bildirimler:<\/strong> <code>chrome.notifications<\/code> API'sini kullanarak, indirme kesintileri, ba\u015far\u0131l\u0131 yeniden denemeler ve ba\u015far\u0131s\u0131z iptaller hakk\u0131nda bilgilendirici bildirimler g\u00f6ndermek kullan\u0131c\u0131y\u0131 d\u00f6ng\u00fcde tutar. \u00d6rne\u011fin, bir indirme 3. kez yeniden denendi\u011finde farkl\u0131 bir ses tonu veya \u00f6ncelik ayar\u0131 kullan\u0131labilir.<\/li>\n<li><strong>\u0130statistik Paneli:<\/strong> Uzant\u0131n\u0131n a\u00e7\u0131l\u0131r penceresine (popup) veya ayarlar sayfas\u0131na basit bir istatistik paneli eklemek, kullan\u0131c\u0131n\u0131n uzant\u0131n\u0131n de\u011ferini anlamas\u0131na yard\u0131mc\u0131 olur. Bu panel \u015funlar\u0131 g\u00f6sterebilir:\n<ul>\n<li>Toplam kurtar\u0131lan indirme say\u0131s\u0131<\/li>\n<li>En \u00e7ok kesintiye u\u011frayan dosyalar<\/li>\n<li>Retry Maniac sayesinde tahmini olarak kurtar\u0131lan toplam indirme s\u00fcresi (basit bir hesaplama ile)<\/li>\n<li>A\u011f hatas\u0131 t\u00fcrlerine g\u00f6re da\u011f\u0131l\u0131m (e\u011fer detayl\u0131 hata kodu al\u0131nabiliyorsa)<\/li>\n<\/ul>\n<\/li>\n<li><strong>G\u00f6rsel Geri Bildirim:<\/strong> Uzant\u0131 ikonunun, aktif bir yeniden deneme oldu\u011funda hafif\u00e7e yan\u0131p s\u00f6nmesi veya bir saya\u00e7 g\u00f6stermesi gibi k\u00fc\u00e7\u00fck g\u00f6rsel ipu\u00e7lar\u0131, kullan\u0131c\u0131n\u0131n uzant\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 hissetmesini sa\u011flar.<\/li>\n<\/ul>\n<h3>Mobil Uyumlu HTML ve Responsive Tasar\u0131m \u0130pu\u00e7lar\u0131 (Ayarlar Sayfas\u0131 \u0130\u00e7in)<\/h3>\n<p>Chrome uzant\u0131lar\u0131n\u0131n ana oda\u011f\u0131 masa\u00fcst\u00fc taray\u0131c\u0131lar olsa da, modern web standartlar\u0131 ve Chrome'un gelecekteki olas\u0131 mobil entegrasyonlar\u0131 g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, uzant\u0131n\u0131n popup veya options (ayarlar) sayfalar\u0131n\u0131n responsive (duyarl\u0131) olmas\u0131 iyi bir uygulamad\u0131r. Bu, \u00f6zellikle Chrome'un tablet modunda veya gelecekteki mobil uzant\u0131 platformlar\u0131nda iyi bir g\u00f6r\u00fcn\u00fcm ve kullan\u0131m kolayl\u0131\u011f\u0131 sa\u011flar.<\/p>\n<ul>\n<li><strong>Viewport Meta Etiketi:<\/strong> HTML sayfan\u0131z\u0131n <code><head><\/code> b\u00f6l\u00fcm\u00fcne a\u015fa\u011f\u0131daki etiketi eklemek, sayfan\u0131n cihaz\u0131n geni\u015fli\u011fine uygun \u00f6l\u00e7eklenmesini sa\u011flar.\n<pre><code class=\"language-html\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Temel CSS Media Query \u00d6rne\u011fi:<\/strong> CSS <code>media query<\/code>'ler kullanarak ekran geni\u015fli\u011fine g\u00f6re farkl\u0131 stiller uygulayabilirsiniz. \u00d6rne\u011fin, uzant\u0131n\u0131z\u0131n ayarlar sayfas\u0131ndaki butonlar\u0131 daha k\u00fc\u00e7\u00fck ekranlarda daha b\u00fcy\u00fck yapmak veya s\u00fctunlar\u0131 tek bir s\u00fctuna indirmek isteyebilirsiniz.\n<pre><code class=\"language-html\">\n<style>\n.container {\n    width: 90%;\n    margin: auto;\n    padding: 20px;\n    box-sizing: border-box; \/* Padding'in geni\u015fli\u011fe dahil olmas\u0131n\u0131 sa\u011flar *\/\n}\n.button {\n    padding: 12px 20px;\n    font-size: 16px;\n    width: 100%; \/* K\u00fc\u00e7\u00fck ekranlarda tam geni\u015flik *\/\n    box-sizing: border-box;\n}\n\n@media (max-width: 600px) { \/* Ekran geni\u015fli\u011fi 600px'den az oldu\u011funda *\/\n    .container {\n        width: 95%; \/* Daha dar bir container *\/\n        padding: 10px;\n    }\n    .button {\n        padding: 10px 15px; \/* Daha k\u00fc\u00e7\u00fck padding *\/\n        font-size: 14px; \/* Daha k\u00fc\u00e7\u00fck font *\/\n    }\n    .setting-item { \/* Ayar elemanlar\u0131n\u0131 y\u0131\u011f\u0131nla *\/\n        flex-direction: column;\n        align-items: flex-start;\n    }\n}\n<\/style>\n        <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnek, <code>container<\/code> ve <code>button<\/code> gibi elementlerin k\u00fc\u00e7\u00fck ekranlarda nas\u0131l farkl\u0131 g\u00f6r\u00fcnebilece\u011fini g\u00f6stermektedir. Bu sayede, uzant\u0131n\u0131z\u0131n kullan\u0131c\u0131 aray\u00fcz\u00fc farkl\u0131 ekran boyutlar\u0131na daha iyi adapte olabilir.<\/p>\n<\/li>\n<\/ul>\n<p>Bu ileri d\u00fczey optimizasyonlar ve geli\u015ftirme teknikleri, Retry Maniac'\u0131 sadece i\u015flevsel bir uzant\u0131 olmaktan \u00e7\u0131kar\u0131p, kullan\u0131c\u0131lar i\u00e7in vazge\u00e7ilmez bir yard\u0131mc\u0131ya d\u00f6n\u00fc\u015ft\u00fcrecektir. Ger\u00e7ek d\u00fcnya sorunlar\u0131na ak\u0131lc\u0131 \u00e7\u00f6z\u00fcmler sunarken, performans ve kullan\u0131c\u0131 deneyiminden \u00f6d\u00fcn vermemek esast\u0131r.<\/p>\n<h2>Sonu\u00e7: \u0130ndirme Sorunlar\u0131na Veda, Kesintisiz Bir Gelece\u011fe Merhaba<\/h2>\n<p>\u0130nternet \u00e7a\u011f\u0131nda, zaman\u0131n ve veri ak\u0131\u015f\u0131n\u0131n kesintisiz olmas\u0131 giderek daha b\u00fcy\u00fck \u00f6nem ta\u015f\u0131yor. B\u00fcy\u00fck dosyalar\u0131n indirilmesi, a\u011f kesintileri veya sunucu sorunlar\u0131 nedeniyle s\u0131k\u00e7a yar\u0131m kalan bir eylem olmaktan \u00e7\u0131kt\u0131. \u0130\u015fte bu noktada, Chrome i\u00e7in geli\u015ftirdi\u011fimiz Retry Maniac uzant\u0131s\u0131, kullan\u0131c\u0131lar\u0131n bu yayg\u0131n soruna veda etmesini sa\u011flayan g\u00fc\u00e7l\u00fc ve ak\u0131ll\u0131 bir \u00e7\u00f6z\u00fcm olarak \u00f6ne \u00e7\u0131k\u0131yor. Temel otomatik yeniden deneme mant\u0131\u011f\u0131ndan, \u00fcstel geri \u00e7ekilme stratejilerine ve kullan\u0131c\u0131 dostu bildirimlere kadar pek \u00e7ok \u00f6zelli\u011fiyle Retry Maniac, indirme deneyiminizi k\u00f6kten de\u011fi\u015ftirmeyi hedefliyor.<\/p>\n<p>Bu makale boyunca, Retry Maniac'\u0131n neden \u00f6nemli oldu\u011funu, arka plan\u0131ndaki yeniden deneme mekanizmalar\u0131n\u0131 ve Chrome uzant\u0131lar\u0131n\u0131n mimarisini ad\u0131m ad\u0131m inceledik. Manifest V3'\u00fcn sundu\u011fu avantajlar\u0131 kullanarak, Service Worker tabanl\u0131 g\u00fc\u00e7l\u00fc bir arka plan beti\u011fiyle kesintiye u\u011frayan indirmeleri nas\u0131l otomatik olarak ele alabilece\u011fimizi g\u00f6sterdik. Ger\u00e7ek d\u00fcnya senaryolar\u0131yla uzant\u0131n\u0131n de\u011ferini ortaya koyarken, performans optimizasyonlar\u0131 ve kullan\u0131c\u0131 deneyimini zenginle\u015ftirme yollar\u0131n\u0131 da ele ald\u0131k. Mobil uyumlu HTML ipu\u00e7lar\u0131 dahi, uzant\u0131n\u0131n gelecekteki potansiyel uyumluluklar\u0131n\u0131 ve esnekli\u011fini g\u00f6stermektedir.<\/p>\n<p>Retry Maniac, sadece bir indirme y\u00f6neticisi olmaktan \u00f6teye ge\u00e7erek, kullan\u0131c\u0131lar\u0131n dijital ya\u015famlar\u0131nda kesintisizli\u011fi ve verimlili\u011fi art\u0131ran bir ara\u00e7 olmay\u0131 vaat ediyor. \u0130ster b\u00fcy\u00fck bir oyun indiriyor olun, ister kritik bir i\u015f belgesine ihtiyac\u0131n\u0131z olsun, Retry Maniac indirmelerinizin her zaman hedefine ula\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in arka planda sessizce \u00e7al\u0131\u015f\u0131r. Gelecekte, yapay zeka destekli tahminler, daha ak\u0131ll\u0131 a\u011f alg\u0131lama algoritmalar\u0131 ve kapsaml\u0131 bulut entegrasyonlar\u0131 ile Retry Maniac'\u0131n yetenekleri daha da geni\u015fleyebilir. \u0130ndirme sorunlar\u0131na kesin bir veda ederek, kesintisiz bir dijital gelece\u011fe ad\u0131m atmak i\u00e7in Retry Maniac'\u0131 denemeye davetlisiniz!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. Retry Maniac hangi taray\u0131c\u0131larda \u00e7al\u0131\u015f\u0131r?<\/strong><br \/>\nRetry Maniac, Chrome API'lerini kulland\u0131\u011f\u0131 i\u00e7in sadece Google Chrome taray\u0131c\u0131s\u0131nda \u00e7al\u0131\u015fmak \u00fczere tasarlanm\u0131\u015ft\u0131r. Di\u011fer Chromium tabanl\u0131 taray\u0131c\u0131larda (Edge, Brave vb.) teorik olarak \u00e7al\u0131\u015fabilse de, en iyi ve garanti edilmi\u015f performans Chrome \u00fczerinde sa\u011flan\u0131r.<\/p>\n<p><strong>2. Uzant\u0131 g\u00fcvenli mi? Ki\u015fisel verilerimi kullan\u0131yor mu?<\/strong><br \/>\nEvet, uzant\u0131 g\u00fcvenli bir \u015fekilde tasarlanm\u0131\u015ft\u0131r. Sadece indirme i\u015flemlerini y\u00f6netmek, kullan\u0131c\u0131 ayarlar\u0131n\u0131 kaydetmek ve bildirim g\u00f6ndermek i\u00e7in gerekli olan izinleri (<code>downloads<\/code>, <code>storage<\/code>, <code>notifications<\/code>) ister. Hi\u00e7bir ki\u015fisel veri toplamaz, i\u015flemez veya harici sunuculara g\u00f6ndermez. T\u00fcm i\u015flemler yerel olarak taray\u0131c\u0131n\u0131zda ger\u00e7ekle\u015fir.<\/p>\n<p><strong>3. T\u00fcm indirme t\u00fcrlerini destekliyor mu?<\/strong><br \/>\nEvet, Chrome taray\u0131c\u0131s\u0131n\u0131n destekledi\u011fi t\u00fcm indirme t\u00fcrlerini (ZIP dosyalar\u0131, PDF'ler, yaz\u0131l\u0131m kurulumlar\u0131, medya dosyalar\u0131 vb.) destekler. Taray\u0131c\u0131n\u0131n varsay\u0131lan indirme mekanizmas\u0131yla entegre \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, Chrome'un indirmeyi ba\u015flatt\u0131\u011f\u0131 her dosya t\u00fcr\u00fc i\u00e7in Retry Maniac da devreye girebilir.<\/p>\n<p><strong>4. Yeniden deneme say\u0131s\u0131n\u0131 veya gecikme s\u00fcresini ayarlayabilir miyim?<\/strong><br \/>\nKesinlikle! Retry Maniac, kullan\u0131c\u0131lar\u0131n kendi ihtiya\u00e7lar\u0131na g\u00f6re ayarlayabilece\u011fi \u00f6zelle\u015ftirilebilir se\u00e7enekler sunar. Uzant\u0131n\u0131n ayarlar sayfas\u0131ndan (<code>options.html<\/code>), maksimum yeniden deneme say\u0131s\u0131n\u0131, denemeler aras\u0131ndaki ba\u015flang\u0131\u00e7 gecikme s\u00fcresini ve \u00fcstel geri \u00e7ekilme \u00f6zelli\u011finin etkin olup olmad\u0131\u011f\u0131n\u0131 kolayca ayarlayabilirsiniz.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"\u0130nternet ba\u011flant\u0131n\u0131z ne kadar h\u0131zl\u0131 olursa olsun, b\u00fcy\u00fck dosyalar\u0131 indirirken ya\u015fanan kesintiler veya &#8220;tak\u0131lmalar&#8221; herkesin kabusu. Tam da&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-35362","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm<\/title>\n<meta name=\"description\" content=\"\u0130nternet ba\u011flant\u0131n\u0131z ne kadar h\u0131zl\u0131 olursa olsun, b\u00fcy\u00fck dosyalar\u0131 indirirken ya\u015fanan kesintiler veya &quot;tak\u0131lmalar&quot; herkesin kabusu. Tam da bu noktada devreye giren Retry Maniac, Chrome taray\u0131c\u0131n\u0131z i\u00e7in geli\u015ftirilen yenilik\u00e7i bir uzant\u0131 olarak indirme sorunlar\u0131na ak\u0131ll\u0131ca ve otomatik bir \u00e7\u00f6z\u00fcm sunuyor. Art\u0131k bitmek bilmeyen indirme sorunlar\u0131na veda etme zaman\u0131!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm\" \/>\n<meta property=\"og:description\" content=\"\u0130nternet ba\u011flant\u0131n\u0131z ne kadar h\u0131zl\u0131 olursa olsun, b\u00fcy\u00fck dosyalar\u0131 indirirken ya\u015fanan kesintiler veya &quot;tak\u0131lmalar&quot; herkesin kabusu. Tam da bu noktada devreye giren Retry Maniac, Chrome taray\u0131c\u0131n\u0131z i\u00e7in geli\u015ftirilen yenilik\u00e7i bir uzant\u0131 olarak indirme sorunlar\u0131na ak\u0131ll\u0131ca ve otomatik bir \u00e7\u00f6z\u00fcm sunuyor. Art\u0131k bitmek bilmeyen indirme sorunlar\u0131na veda etme zaman\u0131!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-28T18:01:05+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"23 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm\",\"datePublished\":\"2025-11-28T18:01:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/\"},\"wordCount\":4129,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/\",\"name\":\"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-28T18:01:05+00:00\",\"description\":\"\u0130nternet ba\u011flant\u0131n\u0131z ne kadar h\u0131zl\u0131 olursa olsun, b\u00fcy\u00fck dosyalar\u0131 indirirken ya\u015fanan kesintiler veya \\\"tak\u0131lmalar\\\" herkesin kabusu. Tam da bu noktada devreye giren Retry Maniac, Chrome taray\u0131c\u0131n\u0131z i\u00e7in geli\u015ftirilen yenilik\u00e7i bir uzant\u0131 olarak indirme sorunlar\u0131na ak\u0131ll\u0131ca ve otomatik bir \u00e7\u00f6z\u00fcm sunuyor. Art\u0131k bitmek bilmeyen indirme sorunlar\u0131na veda etme zaman\u0131!\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm","description":"\u0130nternet ba\u011flant\u0131n\u0131z ne kadar h\u0131zl\u0131 olursa olsun, b\u00fcy\u00fck dosyalar\u0131 indirirken ya\u015fanan kesintiler veya \"tak\u0131lmalar\" herkesin kabusu. Tam da bu noktada devreye giren Retry Maniac, Chrome taray\u0131c\u0131n\u0131z i\u00e7in geli\u015ftirilen yenilik\u00e7i bir uzant\u0131 olarak indirme sorunlar\u0131na ak\u0131ll\u0131ca ve otomatik bir \u00e7\u00f6z\u00fcm sunuyor. Art\u0131k bitmek bilmeyen indirme sorunlar\u0131na veda etme zaman\u0131!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/","og_locale":"tr_TR","og_type":"article","og_title":"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm","og_description":"\u0130nternet ba\u011flant\u0131n\u0131z ne kadar h\u0131zl\u0131 olursa olsun, b\u00fcy\u00fck dosyalar\u0131 indirirken ya\u015fanan kesintiler veya \"tak\u0131lmalar\" herkesin kabusu. Tam da bu noktada devreye giren Retry Maniac, Chrome taray\u0131c\u0131n\u0131z i\u00e7in geli\u015ftirilen yenilik\u00e7i bir uzant\u0131 olarak indirme sorunlar\u0131na ak\u0131ll\u0131ca ve otomatik bir \u00e7\u00f6z\u00fcm sunuyor. Art\u0131k bitmek bilmeyen indirme sorunlar\u0131na veda etme zaman\u0131!","og_url":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-28T18:01:05+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"23 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm","datePublished":"2025-11-28T18:01:05+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/"},"wordCount":4129,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/","url":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/","name":"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-28T18:01:05+00:00","description":"\u0130nternet ba\u011flant\u0131n\u0131z ne kadar h\u0131zl\u0131 olursa olsun, b\u00fcy\u00fck dosyalar\u0131 indirirken ya\u015fanan kesintiler veya \"tak\u0131lmalar\" herkesin kabusu. Tam da bu noktada devreye giren Retry Maniac, Chrome taray\u0131c\u0131n\u0131z i\u00e7in geli\u015ftirilen yenilik\u00e7i bir uzant\u0131 olarak indirme sorunlar\u0131na ak\u0131ll\u0131ca ve otomatik bir \u00e7\u00f6z\u00fcm sunuyor. Art\u0131k bitmek bilmeyen indirme sorunlar\u0131na veda etme zaman\u0131!","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/chrome-icin-retry-maniac-indirme-sorunlarina-kesin-cozum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Chrome \u0130\u00e7in Retry Maniac: \u0130ndirme Sorunlar\u0131na Kesin \u00c7\u00f6z\u00fcm"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35362","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35362"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35362\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}