{"id":244,"date":"2015-03-11T17:39:51","date_gmt":"2015-03-11T15:39:51","guid":{"rendered":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/?p=244"},"modified":"2015-03-11T17:49:13","modified_gmt":"2015-03-11T15:49:13","slug":"uso-de-cdns-con-alternativa-de-carga-local","status":"publish","type":"post","link":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/2015\/03\/11\/uso-de-cdns-con-alternativa-de-carga-local\/","title":{"rendered":"Uso de CDNs con alternativa de carga local"},"content":{"rendered":"<p>En la actualidad es muy habitual hacer uso de librer\u00edas de terceros para aprovecharnos de las funcionalidades espec\u00edficas que nos pueden aportar, como por ejemplo en aspectos como: animaci\u00f3n, gesti\u00f3n de fechas, acceso y manipulaci\u00f3n del <a title=\"DOM, document object model\" href=\"https:\/\/developer.mozilla.org\/es\/docs\/DOM\" target=\"_blank\">DOM<\/a>, trabajo con mapas, apis de redes sociales, etc. Esto hace que no sea extra\u00f1o que en proyectos de determinada complejidad se empleen incluso decenas de librer\u00edas de terceros.<\/p>\n<p>Por otro lado son conocidos los beneficios de usar una <a title=\"Buenas pr\u00e1cticas del uso de CDNs para librer\u00edas JavaScript\" href=\"http:\/\/es.wikipedia.org\/wiki\/Red_de_entrega_de_contenidos\" target=\"_blank\">CDN<\/a> para la carga de las\u00a0librer\u00edas que cuentan con ella, por lo que se hace muy habitual el uso de este mecanismo en proyectos web, para mejorar la carga de nuestras\u00a0p\u00e1ginas aprovechando las bondades de estos sistemas.<\/p>\n<p>Pero cuando hacemos esto no deber\u00edamos olvidar que cada <a title=\"Buenas pr\u00e1cticas del uso de CDNs para librer\u00edas JavaScript\" href=\"http:\/\/es.wikipedia.org\/wiki\/Red_de_entrega_de_contenidos\" target=\"_blank\">CDN<\/a> que usamos, si no le damos una alternativa local, pone en riesgo la estabilidad de nuestro proyecto, ya que ser\u00e1 una dependencia que puede degradar el funcionamiento de la web o aplicaci\u00f3n, o incluso bloquearlo. Es decir, si hacemos uso intensivo de <a title=\"jQuery, famosa librer\u00eda para acceso y manipulaci\u00f3n del dom\" href=\"http:\/\/jquery.com\" target=\"_blank\">jQuery<\/a>, y lo cargamos con una <a title=\"Buenas pr\u00e1cticas del uso de CDNs para librer\u00edas JavaScript\" href=\"http:\/\/es.wikipedia.org\/wiki\/Red_de_entrega_de_contenidos\" target=\"_blank\">CDN<\/a> sin tener una versi\u00f3n \u00abalternativa\u00bb local, y dicha <a title=\"Buenas pr\u00e1cticas del uso de CDNs para librer\u00edas JavaScript\" href=\"http:\/\/es.wikipedia.org\/wiki\/Red_de_entrega_de_contenidos\" target=\"_blank\">CDN<\/a> deja de estar disponible nuestro proyecto dejar\u00e1 de funcionar con casi toda seguridad porque \u00abun tercero\u00bb ha ca\u00eddo. Si extrapolamos esta situaci\u00f3n a varias librer\u00edas, nuestro proyecto tendr\u00eda multitud de puntos cr\u00edticos cuando en realidad solo deber\u00eda tener uno, su propio servidor.<\/p>\n<p>Para ello se aplica una t\u00e9cnica conocida como \u00abfallback\u00bb que permite intentar cargar la librer\u00eda desde la <a title=\"Buenas pr\u00e1cticas del uso de CDNs para librer\u00edas JavaScript\" href=\"http:\/\/es.wikipedia.org\/wiki\/Red_de_entrega_de_contenidos\" target=\"_blank\">CDN<\/a>, y si detectamos que no ha cargado correctamente, cargar la versi\u00f3n local que tengamos. Siguiendo el ejemplo de <a title=\"jQuery, famosa librer\u00eda para acceso y manipulaci\u00f3n del dom\" href=\"http:\/\/jquery.com\" target=\"_blank\">jQuery<\/a>, esta buena pr\u00e1ctica que os comentamos, se traducir\u00eda en este c\u00f3digo:<\/p>\n<pre class=\"theme:monokai lang:js decode:true\">\r\n&lt;script src=\"\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.2.6\/jquery.min.js\"&gt;&lt;\/script&gt;\r\n&lt;script&gt;if (!window.jQuery) { document.write('&lt;script src=\"\/path\/to\/your\/jquery\"&gt;&lt;\\\/script&gt;'); }\r\n&lt;\/script&gt;\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>En la actualidad es muy habitual hacer uso de librer\u00edas de terceros para aprovecharnos de las funcionalidades espec\u00edficas que nos pueden aportar, como por ejemplo en aspectos como: animaci\u00f3n, gesti\u00f3n de fechas, acceso y manipulaci\u00f3n del DOM, trabajo con mapas, apis de redes sociales, etc. Esto hace que no sea extra\u00f1o que en proyectos de &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/2015\/03\/11\/uso-de-cdns-con-alternativa-de-carga-local\/\" class=\"more-link\">Seguir leyendo<span class=\"screen-reader-text\"> \u00abUso de CDNs con alternativa de carga local\u00bb<\/span><\/a><\/p>\n","protected":false},"author":49,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[18],"class_list":["post-244","post","type-post","status-publish","format-standard","hentry","category-buenas-practicas","tag-javascript","entry"],"_links":{"self":[{"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/posts\/244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/comments?post=244"}],"version-history":[{"count":14,"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/posts\/244\/revisions"}],"predecessor-version":[{"id":258,"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/posts\/244\/revisions\/258"}],"wp:attachment":[{"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/media?parent=244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/categories?post=244"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/multimedia.uoc.edu\/blogs\/pw\/es\/wp-json\/wp\/v2\/tags?post=244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}