2013-08-27 2 views
2

У нас есть кусок Javascript, который ежедневно подаётся миллионам браузеров. Чтобы справиться с нагрузкой, мы решили пойти в Google App Engine.Сокращение расходов на Google App Engine

Одна особенность этого куска Javascript заключается в том, что он (очень) немного отличается от компании, использующей наш сервис.

До сих пор мы регулируем это, служа все через main.py, который в основном идет: - прочитать статический файл JS и распечатать его - печать на код

Мы делаем это при каждой загрузке, а расходы начиная с действительно добавления.

Помимо статической версии файла на одного клиента, есть ли другой способ, который вы могли бы подумать, чтобы сократить наш счет? Может ли использование memcache вместо чтения файла снизить цену каким-либо образом?

Большое спасибо.

+0

являются статическими файлами, которые просто читаются и печатаются или читаются, изменяются и печатаются? или его просто поиск того, какой статический файл использовать? – Faisal

+0

Просто найдите, просто прочитайте и распечатайте, затем распечатайте дополнительный пользовательский код. –

ответ

2

Вот несколько способов более оптимизировать его, не используя cdn.

Да, добавьте уровень memcache, чтобы кэшировать весь весь вывод и добавить дополнительный кеш экземпляра, который использует память экземпляра. Это можно просто сделать, добавив модуль global dict и добавив к нему кеш-ключ/vals. Но вы также можете использовать библиотеки LRUCaching, чтобы не перегружать экземпляры.

Наконец, самым дешевым будет использование cdn и укажите источник в приложение для приложения, если ваш выход не требует слишком частого изменения, вы можете кэшировать эти результаты в течение короткого или длительного времени.

Вот полный блог о кэшировании экземпляра Бен Kamens: http://bjk5.com/post/2320616424/layer-caching-in-app-engine-with-memcache-and-cachepy

3

Я предполагаю, что вы платите много экземпляров часов. Чтение из файловой системы GAE происходит довольно медленно. Таким образом, самый простой способ оптимизации - только чтение из статического файла один раз при запуске вашего экземпляра, сохранение js-файла в памяти (т. Е. Глобальная переменная) и его печать.

Во-вторых, убедитесь, что ваши js кэшируются клиентами, поэтому, когда они перезагружают вашу страницу, вам не нужно снова обслуживать js для них.

Следующий способ должен служить файлу js как статический файл, если это возможно. Это сэкономит вам немного денег, если файл js будет большим, и вы будете использовать циклы процессора, просто распечатывая его. В этом случае ваш обработчик, который генерирует HTML, вставляет соответствующий URL-адрес в соответствующий js-файл, а не регенерирует весь js каждый раз. Вы сэкономите деньги, потому что вы не получите заряженные экземпляры часов для файлов, которые служат статическими файлами, плюс они могут быть кэшированы в кэш-памяти (GAN's CDN), и вам не будет выставлен счет за них.

0

Если вы используете Javascript, обслуживая статические файлы (я предполагаю, что вы сейчас это делаете).

  1. Вы можете использовать memcache (это уменьшает затраты, поскольку обработчик будет работать быстрее - меньше экземпляров).
  2. Вы можете использовать веб-кеш, чтобы разрешить кеш simple example (он уменьшает повторные чтения, а не экземпляры).
  3. Вы можете поддерживать передовые заголовки HTTP enter link description here (необходимо переписать обработчик статических файлов Google) (он уменьшает количество повторных чтений + ускоряет перечитывание, если не изменено - не экземпляр или более быстрые экземпляры и меньше экземпляров).
+0

См. Поля для выравнивания + eTags - мало сложно http://en.wikipedia.org/wiki/List_of_HTTP_header_fields – Chameleon