2012-12-05 5 views
5

GoogleDrive में किसी दस्तावेज़ को संपादित करने के बाद, ऐसा लगता है कि LastModified मान कभी-कभी नहीं बदलता है। ऐसा लगता है कि मूल्य कुछ मिनटों में अपडेट किया जाएगा।फ़ाइल संपादन के बाद Etag और LastModifiedDate donot परिवर्तन

मैंने ड्राइवएसडीके द्वारा दस्तावेज़ के एटाग को लाने की कोशिश की, यह इटाग मूल्य भी होता है।

यह अजीब व्यवहार मुझे वास्तविक समय पर दस्तावेज़ स्थिति (संशोधित या नहीं) प्राप्त करने से रोकता है। किसी भी सुझाव की अत्यधिक सराहना की जाएगी।

[नमूना अनुरोध और प्रतिक्रिया] अनुरोध है सिर्फ GoogleDrive ListFiles: https://www.googleapis.com/drive/v2/files

यहाँ प्रतिक्रिया JSON का हिस्सा है, और आप देख सकते हैं कि ModifiedDate ModifiedByMeDate से पहले है।

{ 
"kind": "drive#fileList", 
"etag": "\"3NNCnvnQuji-pODa6SMQ6atlc3M/oKnf21kAcJKTCIycS597xCSR2bk\"", 
"selfLink": "https://www.googleapis.com/drive/v2/files", 
"items": [ 
    { 
    "kind": "drive#file", 
    "id": "1lZjcJIf3Chuu5upFqtiqfTRnRw7*****rFL_tlO8A", 
    "etag": "\"3NNCnvnQuji-pODa6SMQ6atlc3M/MTM1NDY5MzMyMzQ1Mg\"", 
    "selfLink": "https://www.googleapis.com/drive/v2/files/1lZjcJIf3Chuu5upFqtiqfTRnRw7wSUjbRurFL_tlO8A", 
    "alternateLink": "https://docs.google.com/a/*****.com/document/d/1lZjcJIf3Chuu5upFqtiqfTRnRw7wSUjbRurFL_tlO8A/edit", 
    "embedLink": "https://docs.google.com/a/*****.com/document/d/1lZjcJIf3Chuu5upFqtiqfTRnRw7wSUjbRurFL_tlO8A/preview", 
    "iconLink": "https://ssl.gstatic.com/docs/doclist/images/icon_11_document_list.png", 
    "thumbnailLink": "https://docs.google.com/feeds/vt?gd=true&id=1lZjcJIf3Chuu5upFqtiq*****7wSUjbRurFL_tlO8A&v=22&s=AMedNnoAAAAAU*****UK74n3UiIg0L4TY-NwP3EaAU&sz=s220", 
    "title": "TestFile", 
    "mimeType": "application/vnd.google-apps.document", 
    "labels": { 
    "starred": false, 
    "hidden": false, 
    "trashed": false, 
    "restricted": false, 
    "viewed": true 
    }, 
    "createdDate": "2012-07-24T08:14:13.918Z", 
    "modifiedDate": "2012-12-06T01:49:57.982Z", 
    "modifiedByMeDate": "2012-12-06T01:49:57.982Z", 
    "lastViewedByMeDate": "2012-12-06T01:50:06.974Z", 
    "parents": [ 
    { 
    "kind": "drive#parentReference", 
    "id": "0AJ-aGTt-gWksUk9PVA", 
    "selfLink": "https://www.googleapis.com/drive/v2/files/1lZjcJIf3Chuu5upFqtiqfTRnRw7wSUjbRurFL_tlO8A/parents/0AJ-aGTt-gWksUk9PVA", 
    "parentLink": "https://www.googleapis.com/drive/v2/files/0AJ-aGTt-gWksUk9PVA", 
    "isRoot": true 
    } 
    ], 
    "exportLinks": { 
    "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "https://docs.google.com/feeds/download/documents/export/Export?id=1l*****huu5upFqtiqfTRnRw7wSUjbRurFL_tlO8A&exportFormat=docx", 
    "application/vnd.oasis.opendocument.text": "https://docs.google.com/feeds/download/documents/export/Export?id=1lZjcJIf3Chuu5upF*****SUjbRurFL_tlO8A&exportFormat=odt", 
    "text/html": "https://docs.google.com/feeds/download/documents/export/Export?id=1lZjcJIf3Chuu5upFqtiqfTRnRw7wSUj*****L_tlO8A&exportFormat=html", 
    "application/rtf": "https://docs.google.com/feeds/download/documents/export/Export?id=1lZjcJIf3Chuu5upFqtiq*****SUjbRurFL_tlO8A&exportFormat=rtf", 
    "text/plain": "https://docs.google.com/feeds/download/documents/export/Export?id=1lZjcJIf3Chuu5upFqtiqf*****SUjbRurFL_tlO8A&exportFormat=txt", 
    "application/pdf": "https://docs.google.com/feeds/download/documents/export/Export?id=1lZjcJIf3C*****fTRnRw7wSUjbRurFL_tlO8A&exportFormat=pdf" 
    }, 
    "userPermission": { 
    "kind": "drive#permission", 
    "etag": "\"3NNCnvnQuji-pODa6SMQ6atlc3M/6LfqbkrWujmUe1WSDkyhTxdIUCc\"", 
    "id": "me", 
    "selfLink": "https://www.googleapis.com/drive/v2/files/1lZjcJIf3Chuu5upFqtiqfTRnRw7wSUjbRurFL_tlO8A/permissions/me", 
    "role": "owner", 
    "type": "user" 
    }, 
    "quotaBytesUsed": "0", 
    "ownerNames": [ 
    "***** *****" 
    ], 
    "lastModifyingUserName": "***** *****", 
    "editable": true, 
    "writersCanShare": true, 
    "appDataContents": false 
    }, 
+1

कृपया संबंधित JSON प्रतिक्रिया के साथ एक नमूना अनुरोध जोड़ें जो दिखाता है कि अंतिम संशोधित मान परिवर्तित नहीं हुआ है। –

+0

हाय क्लाउडियो, मैंने अभी नमूना प्रतिक्रिया JSON संलग्न किया है। – asir6

+0

यदि आप अद्यतन अनुरोध भेजते समय संशोधितडेट फ़ील्ड सेट करना चाहते हैं, तो आपको अपने अनुरोध पैरामीटर में setModifiedDate = true भी सेट करना होगा: https://developers.google.com/drive/v2/reference/files/update –

उत्तर

2

Google के बुनियादी ढांचे अद्यतनों के बाद Google दस्तावेज़ों को असीमित रूप से अद्यतन करता है। मेरे ज्ञान के लिए, यह etag, थंबनेल, और शायद md5sum और कुछ संशोधित तिथियों को प्रभावित करता है।

Google से कुछ दस्तावेज यह पुष्टि करते हैं कि कौन से आइटम असीमित हैं और जो सिंक्रोनस हैं, डेवलपर्स के लिए बेहद उपयोगी होंगे।

+0

आपने यह कैसे खोजा? क्या यह एपीआई के साथ प्रयोग कर रहा था? मुझे यह जानने में दिलचस्पी होगी कि आपकी टिप्पणियां अभी भी सच हैं, 3 साल बाद ... – kiwidrew

+0

प्रयोग। मुझे संदेह है कि क्या यह बदल गया है क्योंकि इसके लिए बुनियादी ढांचे के कुल नवीनीकरण की आवश्यकता होगी। हालांकि प्रदर्शन ऐसा हो सकता है कि विलंब अपरिहार्य है। – pinoyyid

+0

ठीक है, मुझे बताने के लिए धन्यवाद! – kiwidrew

6

यह सवाल का जवाब नहीं देता है, लेकिन मैं etag और modifiedDate पर File संसाधनों पर टिप्पणी करना चाहता हूं। Fileetag सीधे modifiedDate मान से मेल खाता है। etag (स्लैश के बाद) का दूसरा भाग modifiedDate का एन्कोडिंग है।

दस्तावेज़ सूची API में, नामक एक संपत्ति है updated संपत्ति के अलावा (जो यहां modifiedDate के अनुरूप है)। जिस तरह से इन टाइमस्टैम्प परिवर्तनों को स्पष्ट रूप से दस्तावेज नहीं किया गया है, लेकिन मैंने देखा है कि app:edited वस्तुतः हर बदलाव पर परिवर्तन (उदाहरण के लिए, अगर किसी अन्य उपयोगकर्ता द्वारा सही ढंग से याद किया जाता है) और updated परिवर्तन अधिक सीमित हैं (उदाहरण के लिए सामग्री संशोधन और अनुमति परिवर्तन)। और etag सीधे app:edited से मेल खाता है, जो कि अच्छा है क्योंकि app:edited का परिवर्तन इंगित करता है कि वास्तव में एक परिवर्तन था (कभी-कभी यह बहुत अधिक बदलता है, जैसे कि किसी भिन्न उपयोगकर्ता द्वारा फ़ाइल की तारांकन की तरह, क्योंकि यह वास्तव में प्रभावित नहीं होता है वर्तमान उपयोगकर्ता का मेटाडाटा)।

मैं क्या कहना चाहता हूं कि मुझे लगता है कि दस्तावेज़ सूची etag (और app:edited संपत्ति होने) ड्राइव API से modifiedDate केवल बेहतर है। उत्तरार्द्ध के साथ समस्या यह है कि आपके पास यह निर्धारित करने का कोई विश्वसनीय तरीका नहीं है कि File संसाधन बदल गया है या नहीं। उदाहरण के लिए, यदि आप यह जांचना चाहते हैं कि File संसाधन बदल गया है, तो आप 10 का उपयोग कर If-None-Match शीर्षलेख के साथ files.get विधि का उपयोग कर सकते थे। लेकिन etag हमेशा बदलता नहीं है क्योंकि modifiedDate हमेशा नहीं बदलता है। यह बदलता है, उदाहरण के लिए, जब नई सामग्री होती है, या एसीएल बदल जाती है, या विवरण बदल जाता है, लेकिन बदलता नहीं है, उदाहरण के लिए, जब ट्रैश किया जाता है, या माता-पिता बदल जाते हैं। दो संसाधनों की तुलना करते समय, आप विश्वसनीय रूप से निर्धारित नहीं कर सकते कि कौन सा नया है। इस तथ्य को जोड़ें कि modifiedDate सेट किया जा सकता है (उदाहरण के लिए modifiedDate को पहले के मान, या यहां तक ​​कि निरंतर मान, और etag पर सेट करना संभव होगा)। etag का उद्देश्य उद्देश्य खो गया है। ऐसे कई मामले हैं जहां हम केवल परिवर्तन सूची पर भरोसा नहीं कर सकते हैं, और यदि etag सही तरीके से व्यवहार करता है, तो हुए परिवर्तनों को निर्धारित करने में यह बड़ी सहायता होगी।

मेरा सुझाव है कि दस्तावेज़ सूची API के समान होने के लिए etag के व्यवहार को पुनर्स्थापित करना है। और यह निर्धारित करने में सहायता के लिए कि किस संसाधन में नई जानकारी है, app:edited संपत्ति को भी वापस जोड़ें (मुझे लगता है कि etag के मान को दस्तावेज करना पर्याप्त है, आधिकारिक तौर पर यह कहकर कि दूसरा भाग टाइमस्टैम्प का एन्कोडिंग है, ताकि हम भरोसा कर सकें यह हमेशा बढ़ रहा है)। साथ ही, मुझे लगता है कि सामग्री संशोधन पर modifiedDate संपत्ति को बदलने के लिए बेहतर है, और कुछ और नहीं (उदा। एसीएल परिवर्तन या विवरण परिवर्तन के साथ नहीं)।

इसी प्रकार, etagRevision(List) वर्बैटिम फ़ाइलों के संसाधन भी बहुत उपयोगी नहीं हैं। चूंकि downloadUrl संपत्ति नियमित रूप से बदलती है, etag प्रत्येक Revision में से और पूरी सूची इसके साथ बदलती है, इसे बेकार प्रदान करती है (क्योंकि आप यह देखने के लिए इसका उपयोग नहीं कर सकते कि संशोधन क्यों नहीं बदला गया है)। अच्छी बात यह है कि md5Checksum संपत्ति आप तुलना कर सकते हैं, लेकिन कुछ मामलों में यह विश्वसनीय नहीं है।

संबंधित मुद्दे