Тема: Плагін GreaseMonkey і його кешування підключених скриптів

Вітаю. Виникла потреба в написанні деяких юзерскриптів для деяких сайтів, заюзав плагін для Firefox , GreaseMonkey
В коді скрипта підвантажую зовнішній скрипт з даними:

(Юзерскрипт, який запускаю на сайтів)

// ==UserScript==
// @name        Main
// @namespace   [hide]
// @description Main JS
// @include     [hide]
// @require [hide]/data.js
// @version     1
// @grant       none
// ==/UserScript==

В скрипті, який підвантажую, наступний код:
(файл data.js , який підвантажую у юзерскрипті)

var name = "Sergey";
var lastname = "Popov";

Коли вперше запускаю юзерскрипт на заданому сайті, і виводжу в алерті змінну name - виводить нормально, але якщо уже в подальшому змінюю дані в data.js , то результату не дає ніякого. Всеодно виводить старі дані.

Подякували: 0xDADA11C71

2 Востаннє редагувалося Torbins (25.04.2017 15:03:35)

Re: Плагін GreaseMonkey і його кешування підключених скриптів

Ctrl+F5 пробували? data.js на локальному компі чи на хостінгу? Якщо на локальному, то у файла дата останньої модифікації змінюється? А якщо на хостингу, то які заголовки видає сервак?

Re: Плагін GreaseMonkey і його кешування підключених скриптів

Torbins написав:

Ctrl+F5 пробували? data.js на локальному компі чи на хостінгу? Якщо на локальному, то у файла дата останньої модифікації змінюється? А якщо на хостингу, то які заголовки видає сервак?

Ctrl+F5 пробував.
data.js на хостингу.

http://pix.toile-libre.org/upload/original/1493136572.png

4 Востаннє редагувалося Torbins (25.04.2017 21:46:53)

Re: Плагін GreaseMonkey і його кешування підключених скриптів

Сервак повинен віддавати заголовок Last-Modified: https://www.w3.org/Protocols/rfc2616/rf … l#sec14.29 Тоді проблем бути не повинно. Якщо налаштувати сервак потрібним чином неможливо, то можна використати Cache-Control: no-cache.

Подякували: Адріян Ігорович1

Re: Плагін GreaseMonkey і його кешування підключених скриптів

Torbins написав:

Сервак повинен віддавати заголовок Last-Modified: https://www.w3.org/Protocols/rfc2616/rf … l#sec14.29 Тоді проблем бути не повинно. Якщо налаштувати сервак потрібним чином неможливо, то можна використати Cache-Control: no-cache.

Інший сервіс по перевірці відповіді сервера каже наступне:

Response headers

HTTP/1.1 200 OK
Date: Tue, 25 Apr 2017 19:31:26 GMT
Server: Apache
Last-Modified: Tue, 25 Apr 2017 19:31:23 GMT
Accept-Ranges: bytes
Content-Length: 57
Content-Type: application/javascript

Last-Modified присутній, якщо редагувати файл на сервері, то при наступному запиті він відповідно змінюється(дата і час)

6 Востаннє редагувалося Torbins (26.04.2017 14:33:50)

Re: Плагін GreaseMonkey і його кешування підключених скриптів

Тоді треба іще з Cache-Control погратися. Сучасні браузери мають захист від помилок веб-програмістів, який інколи спрацьовує коли його не просять. Тому інколи дуже важко зрозуміти, що саме не так.
Спробуйте іще зайти на about:cache і пошукати там свій data.js.

Подякували: Адріян Ігорович1

Re: Плагін GreaseMonkey і його кешування підключених скриптів

Виявлено, що сам плагін кешує цей підключений файл.

Подякували: 0xDADA11C71

Re: Плагін GreaseMonkey і його кешування підключених скриптів

Отже по ситуації яка склалася
Моя неуважність та небажання одразу загляну в офф.документацію, коштувала мені двох днів куріння бамбуку.
Як виявилося, плагін зберігає підвантажений скрипт на диск і все, більше його не підтягує з першоджерела.

Як не крути, а плагін треба юзати, тому було прийнято наступне вирішення(яким би воно костильним не було)
1. В самому юзерскрипті підвантажуємо js файл у вигляді звичайного тексту
2. За допомогою eval інтерпритуємо його безпосередньо в юзерскрипті

P.S:
Перш ніж підвантажувати скрипт, в Firefox на about:config , довелося відключити параметр

security.mixed_content.block_active_content

і в самому скрипті(який підвантажується у вигляді тексту), треба додати відправку заголовка

<?php Header('Access-Control-Allow-Origin: *'); ?>

9

Re: Плагін GreaseMonkey і його кешування підключених скриптів

Адріян Ігорович
Якщо вам треба лише дані передати, то можна JSON-ом обійтися.

Подякували: Адріян Ігорович1