Как я могу запретить Word кэшировать JS код API? - PullRequest
0 голосов
/ 08 февраля 2020

Я разрабатываю надстройку Microsoft Word в Office JS API. Надстройка позволяет автору документа или редактору выбирать области текста и создавать теги, которые связывают области с индексными записями. В тегах скрыты строки Oo xml. На втором этапе выполняется перебор тела документа (также сносок) и создание индекса (с заполнителями номеров страниц) в конце документа. Последний шаг реализован в VSTO (C#), который снова просматривает документ и разрешает заполнители номеров страниц с фактическими номерами страниц (поскольку JS API не имеет к ним доступа).

Я использую Word 2016 (версия 1908, сборка 11929.20114 «нажми и работай») - наша организация использует Office 365 и набор требований Word JS API 1.1. Код html, js и css размещен на веб-сервере - в каталоге на диске C пользователя есть файл манифеста xml: диск, который указывает на URL-адрес веб-сервера и который C: расположение каталога добавляется в список Word> Параметры> Центр управления безопасностью> Параметры Центра управления безопасностью> Каталоги надежных надстроек как \\localhost\C$\directory name. Затем надстройка загружается из списка «Надстройки»> «Общая папка» вкладки «Разработчик». Пояснение: вот как выглядит файл манифеста. xml:

<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:type="TaskPaneApp">
           <Id>e69eaa23-19f3-48fd-9f8e-694eb013e434</Id>
    <Version>1.0.0.0</Version>
    <ProviderName>Microsoft</ProviderName>
    <DefaultLocale>en-US</DefaultLocale>
    <DisplayName DefaultValue="PSU Indexing V2" />
    <Description DefaultValue="Manage and create document indexes." />
    <Hosts>
        <Host Name="Document"/>
    </Hosts>
    <DefaultSettings>
        <SourceLocation DefaultValue="https://psuindexer.la.psu.edu/PSUIndexerV2/home.html" />
    </DefaultSettings>
    <Permissions>ReadWriteDocument</Permissions>
</OfficeApp>

Одна проблема, с которой я столкнулся, заключается в том, что Word кэширует очень старую версию JS API-кода. Я зашел в Inte rnet Explorer (версия 11.592.18362.0) и изменил Inte rnet Параметры> Общие> История просмотра> Настройки> и указал «Проверять новые версии сохраненных страниц: каждый раз, когда я захожу на веб-страницу». По совету https://github.com/OfficeDev/office-js/issues/632 я добавил мета-теги http-эквивалента к HTML следующим образом:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="0" />

Но поведение страннее, чем который. Я могу установить надстройку, изменить html и javascript на веб-сайте и нажать кнопку «Перезагрузить» в надстройке, и страницы обновятся, а код обновится. Но если я закрою документ и снова открою его, у него, похоже, будет кешированная версия очень старого кода (ie. От вчерашнего дня). Перезагрузка не решает проблему - единственное, что я могу сделать, это: 1) закрыть надстройку 2) удалить местоположение из надежных каталогов надстроек 3) закрыть Word и снова открыть его 4) добавить местоположение обратно в доверенное снова каталоги надстроек 5) закройте Word и снова откройте его 6) добавьте надстройку обратно из Developer> Add-ins> Shared Folder

Затем она снова будет работать с последним кодом, просто отлично, пока я не закрою слово «документ», после чего после повторного открытия оно снова имеет вчерашнюю версию.

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

1 Ответ

0 голосов
/ 05 марта 2020

Это слишком сложно для обработки комментариев, поэтому я воспользуюсь ответом и удалю это позже. Так как это, похоже, специфицирует документ c, давайте попробуем пару вещей:

  1. Воспроизведите кеширование, чтобы вы получили открытие do c, использующее известная версия надстройки старше текущей версии. Сохраните этот файл под другим именем. Затем снова откройте файл и надстройку. Используется ли старая или новая версия?

  2. Как и в # 1, сохраните копию файла, который использует старую версию. Затем go проведите трехэтапный процесс очистки, чтобы вы получили новый документ, использующий последнюю версию. Сохраните копию этого. Добавьте .zip в конец обоих имен файлов. (файлы в формате docx.) Разархивируйте их обоих. Затем используйте инструмент «diff» и посмотрите, есть ли какая-либо разница, которая может объяснить кеширование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...