Обслуживать приложение html / jss / css с CDN или с сервера приложений (RoR, node.js и т. Д.)? - PullRequest
1 голос
/ 27 мая 2011

Я создаю многофункциональное интернет-приложение (html / js / css), которое должно взаимодействовать с внутренним сервером приложений (RoR или node.js) через XHR / Websocket.

Интересно, как лучше всего передать файлы RIA веб-браузерам: CDN или RoR / node.js в качестве статических файловых серверов?

Разве последний не делает невозможным связь браузера с внутренним сервером из-за той же политики происхождения?

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Та же политика происхождения применяется к запросам, а не к статическим файлам.

Вы находитесь на www.test.com

$.get('api.someotherorigin.com/things.json', function(res){
    // I'll get a same origin policy error
});

Именно поэтому люди используют getJSON / jsonp в этих случаях.Это даже относится к поддоменам, в зависимости от того, как все настроено.

Преимущество cdn заключается в обслуживании статических файлов из источника без файлов cookie, часто оптимизированного для геолокации.Вы почти наверняка не нуждаетесь в этом во время разработки.

Позже выгода будет заключаться в том, что у вас, вероятно, будет только несколько серверов (или только один), расположенных в месте, которое может быть предпочтительным для людей в одном месте, идать дерьмовый RTT для людей, не близких.Кроме того, ваш домен, скорее всего, будет иметь файлы cookie для аутентификации, sessionid и т. Д. И т. Д. - если вы используете cdn, вы избегаете отправки этих файлов cookie вместе с каждым последующим запросом статических файлов, что снижает общий размер запросов / ответов.

1 голос
/ 27 мая 2011

Просто разместите файлы самостоятельно. Вы можете легко обслуживать статические файлы, используя connect

connect.static

Вы можете запросить популярные файлы JavaScript у cdn, если хотите воспользоваться преимуществами кэширования. jscdn и google cdn популярны.

Но ваши личные файлы HTML / CSS должны находиться на статическом файловом сервере. (Вы можете использовать что-то еще, например, nginx, чтобы обслуживать их через поддомен, если хотите)

...