2012-03-26 2 views
0

Насколько я знаю, что это невозможно достичь следующего, но только специалист может подтвердить это:Cache исполнение из файла JavaScript

У меня есть номер страница 1, что запрос для некоторых пользователей и приложений данных, как как только страница загружается, номер страницы 2 использует тот же скрипт, и было бы расточительно запрашивать одну и ту же информацию.

Я знаю, что браузер кэширует сценарий, мой вопрос в том, кэширует ли он выполнение (данные).

Страницы не имеют одинаковой компоновки, поэтому невозможно перегрузить номер страницы 2 через ajax.

+1

Браузеры не могут (и действительно не могут) кэшировать результаты; на самом деле это не имеет особого смысла. Однако вы могли бы поместить результаты некоторых вычислений в файл cookie или в локальное хранилище в браузере. – Pointy

ответ

2

Браузер автоматически не кэшировать результат сценария (это было бы серьезно странно), но вы можете, установив (и проверки) cookies, используя новый local storage stuff на современном браузере, и т.д. Примечание с куки-файлами, однако, что они отправляются на сервер по каждому запросу, поэтому приводят к увеличению количества запросов; если вы можете использовать локальное хранилище, сделайте.

+1

Я бы не рекомендовал файлы cookie здесь, поскольку они передаются при каждом следующем запросе.В зависимости от формы данных для хранения это может привести к довольно ненужному трафику. – Sirko

+0

@Sirko: Я бы сказал, что у нас недостаточно информации, чтобы узнать, подходят ли они к выбору или нет, но это хороший момент для усиления OP. –

1

Вы можете «кэшировать» свои данные, если вы используете какое-то хранилище на стороне клиента, например localStorage (см. MDN docu для получения дополнительной информации).

Сам браузер также может кэшировать ваш запрос внутренне, поскольку запрос ajax ничем не отличается от любого другого запроса, сделанного браузером (html docs, images и т. Д.). Поэтому, в зависимости от вашего точного запроса (включая все параметры), браузер может использовать кешированную версию вашего запроса, чтобы избежать ненужных вызовов. Здесь, однако, применяются обычные ограничения и свойства кеширования, поэтому вы можете не полагаться на это поведение!

1

Браузер не будет кэшировать ваши данные автоматически, если ваша «страница» - это новый URL-адрес.

Но это, конечно, возможно для Вас, чтобы реализовать несколькими способами One является использование локального хранения в новых браузерах, поддерживающих HTML5

Другой написать приложение таким образом, что это одна страница с несколькими представлениями и переходы Используйте AJAX для замены частей вашей страницы (просмотров).

Этот метод становится все более популярным.

Я настоятельно рекомендую прочитать «Веб-приложения Javascript» от Alex MacCaw, чтобы понять javascript MVC и как использовать javascript для создания контроллера на стороне клиента (на основе браузера) и просмотра и управления кэшированием, состоянием и т. Д. В браузере. Также обратите внимание на рамки как Backbone.js

http://www.amazon.com/JavaScript-Web-Applications-Alex-MacCaw/dp/144930351X/ref=sr_1_1?s=books&ie=UTF8&qid=1332771002&sr=1-1

1

Я хотел бы избежать кэширования данных, за исключением случаев, если есть серьезные проблемы с производительностью (и, затем, скорее устранить проблемы с производительностью, чем кэширование его). Это premature optimization.

При хранении данных необходимо учитывать все типы сценариев (устаревшие данные, удаленные данные) (кроме случаев, когда данные являются статическими, но в любом случае это не имеет отношения к делу).

Смежные вопросы